¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.common.utils.email; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.io.IoUtil; |
| | | import cn.hutool.core.map.MapUtil; |
| | | import cn.hutool.core.util.CharUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.extra.mail.*; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.spring.SpringUtils; |
| | | import lombok.AccessLevel; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import javax.mail.Authenticator; |
| | | import javax.mail.Session; |
| | | import java.io.File; |
| | | import java.io.InputStream; |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | |
| | | /** |
| | | * é®ä»¶å·¥å
·ç±» |
| | | */ |
| | | @NoArgsConstructor(access = AccessLevel.PRIVATE) |
| | | public class MailUtils { |
| | | |
| | | private static final MailAccount ACCOUNT = SpringUtils.getBean(MailAccount.class); |
| | | |
| | | /** |
| | | * è·åé®ä»¶åéå®ä¾ |
| | | */ |
| | | public static MailAccount getMailAccount() { |
| | | return ACCOUNT; |
| | | } |
| | | |
| | | /** |
| | | * è·åé®ä»¶åéå®ä¾ (èªå®ä¹åéäººä»¥åææç ) |
| | | * |
| | | * @param username åé人 |
| | | * @param password ææç |
| | | */ |
| | | public static MailAccount getMailAccount(String username, String password) { |
| | | ACCOUNT.setFrom(StringUtils.blankToDefault(username, ACCOUNT.getUser())); |
| | | ACCOUNT.setUser(StringUtils.blankToDefault(username, ACCOUNT.getUser())); |
| | | ACCOUNT.setPass(StringUtils.blankToDefault(password, ACCOUNT.getPass())); |
| | | return ACCOUNT; |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨é
ç½®æä»¶ä¸è®¾ç½®çè´¦æ·åéææ¬é®ä»¶ï¼åéç»å个æå¤ä¸ªæ¶ä»¶äºº<br> |
| | | * å¤ä¸ªæ¶ä»¶äººå¯ä»¥ä½¿ç¨éå·â,âåéï¼ä¹å¯ä»¥éè¿åå·â;âåé |
| | | * |
| | | * @param to æ¶ä»¶äºº |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | * @since 3.2.0 |
| | | */ |
| | | public static String sendText(String to, String subject, String content, File... files) { |
| | | return send(to, subject, content, false, files); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨é
ç½®æä»¶ä¸è®¾ç½®çè´¦æ·åéHTMLé®ä»¶ï¼åéç»å个æå¤ä¸ªæ¶ä»¶äºº<br> |
| | | * å¤ä¸ªæ¶ä»¶äººå¯ä»¥ä½¿ç¨éå·â,âåéï¼ä¹å¯ä»¥éè¿åå·â;âåé |
| | | * |
| | | * @param to æ¶ä»¶äºº |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | * @since 3.2.0 |
| | | */ |
| | | public static String sendHtml(String to, String subject, String content, File... files) { |
| | | return send(to, subject, content, true, files); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨é
ç½®æä»¶ä¸è®¾ç½®çè´¦æ·åéé®ä»¶ï¼åéå个æå¤ä¸ªæ¶ä»¶äºº<br> |
| | | * å¤ä¸ªæ¶ä»¶äººå¯ä»¥ä½¿ç¨éå·â,âåéï¼ä¹å¯ä»¥éè¿åå·â;âåé |
| | | * |
| | | * @param to æ¶ä»¶äºº |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param isHtml æ¯å¦ä¸ºHTML |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | */ |
| | | public static String send(String to, String subject, String content, boolean isHtml, File... files) { |
| | | return send(splitAddress(to), subject, content, isHtml, files); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨é
ç½®æä»¶ä¸è®¾ç½®çè´¦æ·åéé®ä»¶ï¼åéå个æå¤ä¸ªæ¶ä»¶äºº<br> |
| | | * å¤ä¸ªæ¶ä»¶äººãæé人ãå¯é人å¯ä»¥ä½¿ç¨éå·â,âåéï¼ä¹å¯ä»¥éè¿åå·â;âåé |
| | | * |
| | | * @param to æ¶ä»¶äººï¼å¯ä»¥ä½¿ç¨éå·â,âåéï¼ä¹å¯ä»¥éè¿åå·â;âåé |
| | | * @param cc æé人ï¼å¯ä»¥ä½¿ç¨éå·â,âåéï¼ä¹å¯ä»¥éè¿åå·â;âåé |
| | | * @param bcc å¯é人ï¼å¯ä»¥ä½¿ç¨éå·â,âåéï¼ä¹å¯ä»¥éè¿åå·â;âåé |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param isHtml æ¯å¦ä¸ºHTML |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | * @since 4.0.3 |
| | | */ |
| | | public static String send(String to, String cc, String bcc, String subject, String content, boolean isHtml, File... files) { |
| | | return send(splitAddress(to), splitAddress(cc), splitAddress(bcc), subject, content, isHtml, files); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨é
ç½®æä»¶ä¸è®¾ç½®çè´¦æ·åéææ¬é®ä»¶ï¼åéç»å¤äºº |
| | | * |
| | | * @param tos æ¶ä»¶äººå表 |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | */ |
| | | public static String sendText(Collection<String> tos, String subject, String content, File... files) { |
| | | return send(tos, subject, content, false, files); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨é
ç½®æä»¶ä¸è®¾ç½®çè´¦æ·åéHTMLé®ä»¶ï¼åéç»å¤äºº |
| | | * |
| | | * @param tos æ¶ä»¶äººå表 |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | * @since 3.2.0 |
| | | */ |
| | | public static String sendHtml(Collection<String> tos, String subject, String content, File... files) { |
| | | return send(tos, subject, content, true, files); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨é
ç½®æä»¶ä¸è®¾ç½®çè´¦æ·åéé®ä»¶ï¼åéç»å¤äºº |
| | | * |
| | | * @param tos æ¶ä»¶äººå表 |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param isHtml æ¯å¦ä¸ºHTML |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | */ |
| | | public static String send(Collection<String> tos, String subject, String content, boolean isHtml, File... files) { |
| | | return send(tos, null, null, subject, content, isHtml, files); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨é
ç½®æä»¶ä¸è®¾ç½®çè´¦æ·åéé®ä»¶ï¼åéç»å¤äºº |
| | | * |
| | | * @param tos æ¶ä»¶äººå表 |
| | | * @param ccs æé人å表ï¼å¯ä»¥ä¸ºnullæç©º |
| | | * @param bccs å¯é人å表ï¼å¯ä»¥ä¸ºnullæç©º |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param isHtml æ¯å¦ä¸ºHTML |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | * @since 4.0.3 |
| | | */ |
| | | public static String send(Collection<String> tos, Collection<String> ccs, Collection<String> bccs, String subject, String content, boolean isHtml, File... files) { |
| | | return send(getMailAccount(), true, tos, ccs, bccs, subject, content, null, isHtml, files); |
| | | } |
| | | |
| | | // ------------------------------------------------------------------------------------------------------------------------------- Custom MailAccount |
| | | |
| | | /** |
| | | * åéé®ä»¶ç»å¤äºº |
| | | * |
| | | * @param mailAccount é®ä»¶è®¤è¯å¯¹è±¡ |
| | | * @param to æ¶ä»¶äººï¼å¤ä¸ªæ¶ä»¶äººéå·æè
åå·éå¼ |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param isHtml æ¯å¦ä¸ºHTMLæ ¼å¼ |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | * @since 3.2.0 |
| | | */ |
| | | public static String send(MailAccount mailAccount, String to, String subject, String content, boolean isHtml, File... files) { |
| | | return send(mailAccount, splitAddress(to), subject, content, isHtml, files); |
| | | } |
| | | |
| | | /** |
| | | * åéé®ä»¶ç»å¤äºº |
| | | * |
| | | * @param mailAccount é®ä»¶å¸æ·ä¿¡æ¯ |
| | | * @param tos æ¶ä»¶äººå表 |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param isHtml æ¯å¦ä¸ºHTMLæ ¼å¼ |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | */ |
| | | public static String send(MailAccount mailAccount, Collection<String> tos, String subject, String content, boolean isHtml, File... files) { |
| | | return send(mailAccount, tos, null, null, subject, content, isHtml, files); |
| | | } |
| | | |
| | | /** |
| | | * åéé®ä»¶ç»å¤äºº |
| | | * |
| | | * @param mailAccount é®ä»¶å¸æ·ä¿¡æ¯ |
| | | * @param tos æ¶ä»¶äººå表 |
| | | * @param ccs æé人å表ï¼å¯ä»¥ä¸ºnullæç©º |
| | | * @param bccs å¯é人å表ï¼å¯ä»¥ä¸ºnullæç©º |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param isHtml æ¯å¦ä¸ºHTMLæ ¼å¼ |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | * @since 4.0.3 |
| | | */ |
| | | public static String send(MailAccount mailAccount, Collection<String> tos, Collection<String> ccs, Collection<String> bccs, String subject, String content, boolean isHtml, File... files) { |
| | | return send(mailAccount, false, tos, ccs, bccs, subject, content, null, isHtml, files); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨é
ç½®æä»¶ä¸è®¾ç½®çè´¦æ·åéHTMLé®ä»¶ï¼åéç»å个æå¤ä¸ªæ¶ä»¶äºº<br> |
| | | * å¤ä¸ªæ¶ä»¶äººå¯ä»¥ä½¿ç¨éå·â,âåéï¼ä¹å¯ä»¥éè¿åå·â;âåé |
| | | * |
| | | * @param to æ¶ä»¶äºº |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param imageMap å¾çä¸å ä½ç¬¦ï¼å ä½ç¬¦æ ¼å¼ä¸ºcid:$IMAGE_PLACEHOLDER |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | * @since 3.2.0 |
| | | */ |
| | | public static String sendHtml(String to, String subject, String content, Map<String, InputStream> imageMap, File... files) { |
| | | return send(to, subject, content, imageMap, true, files); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨é
ç½®æä»¶ä¸è®¾ç½®çè´¦æ·åéé®ä»¶ï¼åéå个æå¤ä¸ªæ¶ä»¶äºº<br> |
| | | * å¤ä¸ªæ¶ä»¶äººå¯ä»¥ä½¿ç¨éå·â,âåéï¼ä¹å¯ä»¥éè¿åå·â;âåé |
| | | * |
| | | * @param to æ¶ä»¶äºº |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param imageMap å¾çä¸å ä½ç¬¦ï¼å ä½ç¬¦æ ¼å¼ä¸ºcid:$IMAGE_PLACEHOLDER |
| | | * @param isHtml æ¯å¦ä¸ºHTML |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | */ |
| | | public static String send(String to, String subject, String content, Map<String, InputStream> imageMap, boolean isHtml, File... files) { |
| | | return send(splitAddress(to), subject, content, imageMap, isHtml, files); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨é
ç½®æä»¶ä¸è®¾ç½®çè´¦æ·åéé®ä»¶ï¼åéå个æå¤ä¸ªæ¶ä»¶äºº<br> |
| | | * å¤ä¸ªæ¶ä»¶äººãæé人ãå¯é人å¯ä»¥ä½¿ç¨éå·â,âåéï¼ä¹å¯ä»¥éè¿åå·â;âåé |
| | | * |
| | | * @param to æ¶ä»¶äººï¼å¯ä»¥ä½¿ç¨éå·â,âåéï¼ä¹å¯ä»¥éè¿åå·â;âåé |
| | | * @param cc æé人ï¼å¯ä»¥ä½¿ç¨éå·â,âåéï¼ä¹å¯ä»¥éè¿åå·â;âåé |
| | | * @param bcc å¯é人ï¼å¯ä»¥ä½¿ç¨éå·â,âåéï¼ä¹å¯ä»¥éè¿åå·â;âåé |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param imageMap å¾çä¸å ä½ç¬¦ï¼å ä½ç¬¦æ ¼å¼ä¸ºcid:$IMAGE_PLACEHOLDER |
| | | * @param isHtml æ¯å¦ä¸ºHTML |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | * @since 4.0.3 |
| | | */ |
| | | public static String send(String to, String cc, String bcc, String subject, String content, Map<String, InputStream> imageMap, boolean isHtml, File... files) { |
| | | return send(splitAddress(to), splitAddress(cc), splitAddress(bcc), subject, content, imageMap, isHtml, files); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨é
ç½®æä»¶ä¸è®¾ç½®çè´¦æ·åéHTMLé®ä»¶ï¼åéç»å¤äºº |
| | | * |
| | | * @param tos æ¶ä»¶äººå表 |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param imageMap å¾çä¸å ä½ç¬¦ï¼å ä½ç¬¦æ ¼å¼ä¸ºcid:$IMAGE_PLACEHOLDER |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | * @since 3.2.0 |
| | | */ |
| | | public static String sendHtml(Collection<String> tos, String subject, String content, Map<String, InputStream> imageMap, File... files) { |
| | | return send(tos, subject, content, imageMap, true, files); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨é
ç½®æä»¶ä¸è®¾ç½®çè´¦æ·åéé®ä»¶ï¼åéç»å¤äºº |
| | | * |
| | | * @param tos æ¶ä»¶äººå表 |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param imageMap å¾çä¸å ä½ç¬¦ï¼å ä½ç¬¦æ ¼å¼ä¸ºcid:$IMAGE_PLACEHOLDER |
| | | * @param isHtml æ¯å¦ä¸ºHTML |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | */ |
| | | public static String send(Collection<String> tos, String subject, String content, Map<String, InputStream> imageMap, boolean isHtml, File... files) { |
| | | return send(tos, null, null, subject, content, imageMap, isHtml, files); |
| | | } |
| | | |
| | | /** |
| | | * 使ç¨é
ç½®æä»¶ä¸è®¾ç½®çè´¦æ·åéé®ä»¶ï¼åéç»å¤äºº |
| | | * |
| | | * @param tos æ¶ä»¶äººå表 |
| | | * @param ccs æé人å表ï¼å¯ä»¥ä¸ºnullæç©º |
| | | * @param bccs å¯é人å表ï¼å¯ä»¥ä¸ºnullæç©º |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param imageMap å¾çä¸å ä½ç¬¦ï¼å ä½ç¬¦æ ¼å¼ä¸ºcid:$IMAGE_PLACEHOLDER |
| | | * @param isHtml æ¯å¦ä¸ºHTML |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | * @since 4.0.3 |
| | | */ |
| | | public static String send(Collection<String> tos, Collection<String> ccs, Collection<String> bccs, String subject, String content, Map<String, InputStream> imageMap, boolean isHtml, File... files) { |
| | | return send(getMailAccount(), true, tos, ccs, bccs, subject, content, imageMap, isHtml, files); |
| | | } |
| | | |
| | | // ------------------------------------------------------------------------------------------------------------------------------- Custom MailAccount |
| | | |
| | | /** |
| | | * åéé®ä»¶ç»å¤äºº |
| | | * |
| | | * @param mailAccount é®ä»¶è®¤è¯å¯¹è±¡ |
| | | * @param to æ¶ä»¶äººï¼å¤ä¸ªæ¶ä»¶äººéå·æè
åå·éå¼ |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param imageMap å¾çä¸å ä½ç¬¦ï¼å ä½ç¬¦æ ¼å¼ä¸ºcid:$IMAGE_PLACEHOLDER |
| | | * @param isHtml æ¯å¦ä¸ºHTMLæ ¼å¼ |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | * @since 3.2.0 |
| | | */ |
| | | public static String send(MailAccount mailAccount, String to, String subject, String content, Map<String, InputStream> imageMap, boolean isHtml, File... files) { |
| | | return send(mailAccount, splitAddress(to), subject, content, imageMap, isHtml, files); |
| | | } |
| | | |
| | | /** |
| | | * åéé®ä»¶ç»å¤äºº |
| | | * |
| | | * @param mailAccount é®ä»¶å¸æ·ä¿¡æ¯ |
| | | * @param tos æ¶ä»¶äººå表 |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param imageMap å¾çä¸å ä½ç¬¦ï¼å ä½ç¬¦æ ¼å¼ä¸ºcid:$IMAGE_PLACEHOLDER |
| | | * @param isHtml æ¯å¦ä¸ºHTMLæ ¼å¼ |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | * @since 4.6.3 |
| | | */ |
| | | public static String send(MailAccount mailAccount, Collection<String> tos, String subject, String content, Map<String, InputStream> imageMap, boolean isHtml, File... files) { |
| | | return send(mailAccount, tos, null, null, subject, content, imageMap, isHtml, files); |
| | | } |
| | | |
| | | /** |
| | | * åéé®ä»¶ç»å¤äºº |
| | | * |
| | | * @param mailAccount é®ä»¶å¸æ·ä¿¡æ¯ |
| | | * @param tos æ¶ä»¶äººå表 |
| | | * @param ccs æé人å表ï¼å¯ä»¥ä¸ºnullæç©º |
| | | * @param bccs å¯é人å表ï¼å¯ä»¥ä¸ºnullæç©º |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param imageMap å¾çä¸å ä½ç¬¦ï¼å ä½ç¬¦æ ¼å¼ä¸ºcid:$IMAGE_PLACEHOLDER |
| | | * @param isHtml æ¯å¦ä¸ºHTMLæ ¼å¼ |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | * @since 4.6.3 |
| | | */ |
| | | public static String send(MailAccount mailAccount, Collection<String> tos, Collection<String> ccs, Collection<String> bccs, String subject, String content, Map<String, InputStream> imageMap, |
| | | boolean isHtml, File... files) { |
| | | return send(mailAccount, false, tos, ccs, bccs, subject, content, imageMap, isHtml, files); |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®é
ç½®æä»¶ï¼è·åé®ä»¶å®¢æ·ç«¯ä¼è¯ |
| | | * |
| | | * @param mailAccount é®ä»¶è´¦æ·é
ç½® |
| | | * @param isSingleton æ¯å¦åä¾ï¼å
¨å±å
±äº«ä¼è¯ï¼ |
| | | * @return {@link Session} |
| | | * @since 5.5.7 |
| | | */ |
| | | public static Session getSession(MailAccount mailAccount, boolean isSingleton) { |
| | | Authenticator authenticator = null; |
| | | if (mailAccount.isAuth()) { |
| | | authenticator = new UserPassAuthenticator(mailAccount.getUser(), mailAccount.getPass()); |
| | | } |
| | | |
| | | return isSingleton ? Session.getDefaultInstance(mailAccount.getSmtpProps(), authenticator) // |
| | | : Session.getInstance(mailAccount.getSmtpProps(), authenticator); |
| | | } |
| | | |
| | | // ------------------------------------------------------------------------------------------------------------------------ Private method start |
| | | |
| | | /** |
| | | * åéé®ä»¶ç»å¤äºº |
| | | * |
| | | * @param mailAccount é®ä»¶å¸æ·ä¿¡æ¯ |
| | | * @param useGlobalSession æ¯å¦å
¨å±å
񄧮Session |
| | | * @param tos æ¶ä»¶äººå表 |
| | | * @param ccs æé人å表ï¼å¯ä»¥ä¸ºnullæç©º |
| | | * @param bccs å¯é人å表ï¼å¯ä»¥ä¸ºnullæç©º |
| | | * @param subject æ é¢ |
| | | * @param content æ£æ |
| | | * @param imageMap å¾çä¸å ä½ç¬¦ï¼å ä½ç¬¦æ ¼å¼ä¸ºcid:${cid} |
| | | * @param isHtml æ¯å¦ä¸ºHTMLæ ¼å¼ |
| | | * @param files éä»¶å表 |
| | | * @return message-id |
| | | * @since 4.6.3 |
| | | */ |
| | | private static String send(MailAccount mailAccount, boolean useGlobalSession, Collection<String> tos, Collection<String> ccs, Collection<String> bccs, String subject, String content, |
| | | Map<String, InputStream> imageMap, boolean isHtml, File... files) { |
| | | final Mail mail = Mail.create(mailAccount).setUseGlobalSession(useGlobalSession); |
| | | |
| | | // å¯éæé人 |
| | | if (CollUtil.isNotEmpty(ccs)) { |
| | | mail.setCcs(ccs.toArray(new String[0])); |
| | | } |
| | | // å¯éå¯é人 |
| | | if (CollUtil.isNotEmpty(bccs)) { |
| | | mail.setBccs(bccs.toArray(new String[0])); |
| | | } |
| | | |
| | | mail.setTos(tos.toArray(new String[0])); |
| | | mail.setTitle(subject); |
| | | mail.setContent(content); |
| | | mail.setHtml(isHtml); |
| | | mail.setFiles(files); |
| | | |
| | | // å¾ç |
| | | if (MapUtil.isNotEmpty(imageMap)) { |
| | | for (Map.Entry<String, InputStream> entry : imageMap.entrySet()) { |
| | | mail.addImage(entry.getKey(), entry.getValue()); |
| | | // å
³éæµ |
| | | IoUtil.close(entry.getValue()); |
| | | } |
| | | } |
| | | |
| | | return mail.send(); |
| | | } |
| | | |
| | | /** |
| | | * å°å¤ä¸ªè系人转为å表ï¼åé符为éå·æè
åå· |
| | | * |
| | | * @param addresses å¤ä¸ªè系人ï¼å¦æä¸ºç©ºè¿ånull |
| | | * @return è系人å表 |
| | | */ |
| | | private static List<String> splitAddress(String addresses) { |
| | | if (StrUtil.isBlank(addresses)) { |
| | | return null; |
| | | } |
| | | |
| | | List<String> result; |
| | | if (StrUtil.contains(addresses, CharUtil.COMMA)) { |
| | | result = StrUtil.splitTrim(addresses, CharUtil.COMMA); |
| | | } else if (StrUtil.contains(addresses, ';')) { |
| | | result = StrUtil.splitTrim(addresses, ';'); |
| | | } else { |
| | | result = CollUtil.newArrayList(addresses); |
| | | } |
| | | return result; |
| | | } |
| | | // ------------------------------------------------------------------------------------------------------------------------ Private method end |
| | | |
| | | } |