{"id":154,"date":"2020-07-14T16:58:49","date_gmt":"2020-07-14T08:58:49","guid":{"rendered":"https:\/\/22pig.com\/?p=154"},"modified":"2020-07-14T16:58:49","modified_gmt":"2020-07-14T08:58:49","slug":"java-%e5%8f%91%e9%80%81%e9%82%ae%e4%bb%b6demo","status":"publish","type":"post","link":"http:\/\/22pig.com\/?p=154","title":{"rendered":"[java] java mail \u90ae\u4ef6\u53d1\u9001\u5de5\u5177\u7c7b"},"content":{"rendered":"<p>package com.xxx.util;<\/p>\n<p>import java.io.IOException;<br \/>\nimport java.io.UnsupportedEncodingException;<br \/>\nimport java.util.ArrayList;<br \/>\nimport java.util.Arrays;<br \/>\nimport java.util.Date;<br \/>\nimport java.util.HashMap;<br \/>\nimport java.util.List;<br \/>\nimport java.util.Map;<br \/>\nimport java.util.Properties;<br \/>\nimport java.util.regex.Matcher;<br \/>\nimport java.util.regex.Pattern;<\/p>\n<p>import javax.activation.DataHandler;<br \/>\nimport javax.activation.FileDataSource;<br \/>\nimport javax.mail.MessagingException;<br \/>\nimport javax.mail.Session;<br \/>\nimport javax.mail.Transport;<br \/>\nimport javax.mail.internet.InternetAddress;<br \/>\nimport javax.mail.internet.MimeBodyPart;<br \/>\nimport javax.mail.internet.MimeMessage;<br \/>\nimport javax.mail.internet.MimeMultipart;<br \/>\nimport javax.mail.internet.MimeUtility;<\/p>\n<p>import org.apache.commons.beanutils.BeanUtils;<br \/>\nimport org.apache.commons.logging.Log;<br \/>\nimport org.apache.commons.logging.LogFactory;<\/p>\n<p>import com.xxx.util.mail.MailEntity;<br \/>\nimport com.xxx.util.mail.MailTemplate;<br \/>\nimport com.xxx.workflow.util.WorkFlowFunction;<\/p>\n<p>\/**<br \/>\n*<br \/>\n* @author Stone Li<br \/>\n*<br \/>\n*\/<br \/>\npublic class Mail {<br \/>\nprivate static final Log logger = LogFactory.getLog(Mail.class);<br \/>\nprivate static Properties mailConfig;<\/p>\n<p>static{<br \/>\nmailConfig = new Properties();<br \/>\ntry {<br \/>\nmailConfig.load(Mail.class.getResourceAsStream(&#8220;\/com\/xxx\/util\/mail\/mailconf.properties&#8221;));<br \/>\n} catch (IOException e) {<br \/>\ne.printStackTrace();<br \/>\n}<br \/>\n\/\/mailHost=mailConfig.getProperty(&#8220;mail.smtp.host&#8221;);<br \/>\n\/\/mailUserName=mailConfig.getProperty(&#8220;mail.username&#8221;);<br \/>\n\/\/mailPassword=mailConfig.getProperty(&#8220;mail.password&#8221;);<\/p>\n<p>}<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n@Deprecated<br \/>\npublic static String sendMutiMail(List&lt;String&gt; tolist,List&lt;String&gt; cclist,String sendName,String subject,String content,List&lt;String&gt; filepathlist,List&lt;String&gt; imagelist){<br \/>\nreturn sendMail(tolist, cclist, sendName, subject, content, filepathlist, imagelist);<br \/>\n}<br \/>\npublic static String sendMail(List&lt;String&gt; tolist,String sendName,String subject,String content){<br \/>\nreturn sendMail(tolist,null,sendName,subject,content,null,null);<br \/>\n}<br \/>\npublic static String sendMail(List&lt;String&gt; tolist,List&lt;String&gt; cclist,String sendName,String subject,String content){<br \/>\nreturn sendMail(tolist,cclist,sendName,subject,content,null,null);<br \/>\n}<br \/>\npublic static String sendMail(List&lt;String&gt; tolist,List&lt;String&gt; cclist,String sendName,String subject,String content,List&lt;String&gt; filepathlist,List&lt;String&gt; imagelist){<br \/>\nreturn sendMail(tolist, cclist, null, sendName, subject, content, filepathlist, imagelist);<br \/>\n}<\/p>\n<p>public static String sendMail(List&lt;String&gt; tolist,List&lt;String&gt; cclist,List&lt;String&gt; bcclist,String sendName,String subject,String content,List&lt;String&gt; filepathlist,List&lt;String&gt; imagelist){<br \/>\nreturn sendMail(new MailEntity(tolist, cclist, bcclist, sendName, subject, content, filepathlist, imagelist));<br \/>\n}<\/p>\n<p>public static String sendMail(MailEntity mailObj){<br \/>\nList&lt;MailEntity&gt; mailList = new ArrayList&lt;MailEntity&gt;();<br \/>\nmailList.add(mailObj);<br \/>\nreturn sendMail(mailList);<br \/>\n}<\/p>\n<p>\/**<br \/>\n* \u6279\u91cf\u53d1\u9001\u90ae\u4ef6<br \/>\n* @param mailList<br \/>\n* @return<br \/>\n*\/<br \/>\npublic static String sendMail(List&lt;MailEntity&gt; mailList){<br \/>\ntry {<br \/>\nList&lt;MimeMessage&gt; msgList = new ArrayList&lt;MimeMessage&gt;();<br \/>\nfor(MailEntity msg:mailList){<br \/>\nif(checkEmailAddress(msg)){<br \/>\nMimeMessage message = createMimeMessage(mailConfig.getProperty(&#8220;mail.username&#8221;),msg.getSendName(),msg.getSubject(),msg.getContent(),<br \/>\nmsg.getTolist(),msg.getCclist(),msg.getBcclist(),msg.getFilepathlist(),msg.getImagelist());<br \/>\nlogger.info(&#8220;@@@sendMail::tolist:&#8221;+msg.getTolist()+&#8221;,cclist:&#8221;+msg.getCclist()+&#8221;,bcclist:&#8221;+msg.getBcclist()+&#8221;,title:&#8221;+msg.getSubject());<br \/>\nmsgList.add(message);<br \/>\n}else{<br \/>\nreturn &#8220;There is not any email address.&#8221;;<br \/>\n}<br \/>\n}<br \/>\nsendMM(msgList);<br \/>\nreturn &#8220;&#8221;;<br \/>\n} catch (Exception e) {<br \/>\ne.printStackTrace();<br \/>\nlogger.error(&#8220;\u5f02\u5e38:&#8221;+e.getMessage());<br \/>\nreturn e.getMessage();<br \/>\n}<br \/>\n}<\/p>\n<p>private static boolean checkEmailAddress(MailEntity msg){<br \/>\nList&lt;String&gt; tolist = msg.getTolist();<br \/>\nList&lt;String&gt; cclist = msg.getCclist();<br \/>\nList&lt;String&gt; bcclist = msg.getBcclist();<br \/>\ntolist = checkEmailAddress(tolist);<br \/>\ncclist = checkEmailAddress(cclist);<br \/>\nbcclist = checkEmailAddress(bcclist);<br \/>\nmsg.setTolist(tolist);<br \/>\nmsg.setCclist(cclist);<br \/>\nmsg.setBcclist(bcclist);<\/p>\n<p>if((msg.getTolist()!=null &amp;&amp; msg.getTolist().size()&gt;0) || (msg.getCclist()!=null &amp;&amp; msg.getCclist().size()&gt;0)){<br \/>\nreturn true;<br \/>\n}else{<br \/>\nreturn false;<br \/>\n}<br \/>\n\/\/return msg;<br \/>\n}<br \/>\nprivate static List&lt;String&gt; checkEmailAddress(List&lt;String&gt; emaillist){<br \/>\nif(emaillist==null) return null;<br \/>\nList&lt;String&gt; tolist = new ArrayList&lt;String&gt;();<br \/>\nString regEx = &#8220;\\\\w+([-+.]\\\\w+)*@\\\\w+([-.]\\\\w+)*\\\\.\\\\w+([-.]\\\\w+)*&#8221;;<br \/>\nPattern pattern = Pattern.compile(regEx);<br \/>\nfor(String email:emaillist){<br \/>\nMatcher matcher =pattern.matcher(email);<br \/>\nif(matcher.matches()){<br \/>\ntolist.add(email);<br \/>\n}else{<br \/>\nlogger.error(&#8220;\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e~&#8221;);<br \/>\n}<br \/>\n}<br \/>\nreturn tolist;<br \/>\n}<\/p>\n<p>private static void sendMM(List&lt;MimeMessage&gt; messages) throws MessagingException{<br \/>\njavax.mail.Session session = javax.mail.Session.getInstance(mailConfig);<br \/>\n\/\/if(!EnvConfig.isProductEnv()) session.setDebug(true);<br \/>\nTransport transport = session.getTransport();<br \/>\ntransport.connect(null,mailConfig.getProperty(&#8220;mail.username&#8221;), mailConfig.getProperty(&#8220;mail.password&#8221;));<br \/>\nfor(MimeMessage message:messages){<br \/>\ntransport.sendMessage(message, message.getAllRecipients());<br \/>\n}<br \/>\ntransport.close();<br \/>\n}<\/p>\n<p>\/**<br \/>\n* \u521b\u5efa\u5e76\u53d1\u9001\u590d\u6742html\u9644\u4ef6(\u53ef\u5e26\u9644\u4ef6\u3001\u56fe\u7247)<br \/>\n* @param session mail Session<br \/>\n* @param sendMail \u53d1\u9001\u4eba\u90ae\u7bb1<br \/>\n* @param sendName \u53d1\u9001\u4eba<br \/>\n* @param subject \u4e3b\u9898<br \/>\n* @param content \u90ae\u4ef6\u5185\u5bb9<br \/>\n* @param tolist \u6536\u4ef6\u4eba\u5217\u8868<br \/>\n* @param ccList \u6284\u9001\u4eba\u5217\u8868<br \/>\n* @param filelist \u9644\u4ef6\u5217\u8868\u5730\u5740<br \/>\n* @param imagelist \u56fe\u7247\u5217\u8868\u5730\u5740<br \/>\n* @return<br \/>\n* @throws Exception<br \/>\n*\/<br \/>\nprivate static MimeMessage createMimeMessage(String sendMail,<br \/>\nString sendName, String subject, String content,<br \/>\nList&lt;String&gt; tolist, List&lt;String&gt; ccList,<br \/>\nList&lt;String&gt; bccList, List&lt;String&gt; filelist, List&lt;String&gt; imagelist)<br \/>\nthrows Exception {<br \/>\nSession session = javax.mail.Session.getInstance(mailConfig);<br \/>\n\/\/ 1. \u521b\u5efa\u4e00\u5c01\u90ae\u4ef6<br \/>\nMimeMessage message = new MimeMessage(session);<br \/>\n\/\/ 2. From: \u53d1\u4ef6\u4eba\uff08\u6635\u79f0\u6709\u5e7f\u544a\u5acc\u7591\uff0c\u907f\u514d\u88ab\u90ae\u4ef6\u670d\u52a1\u5668\u8bef\u8ba4\u4e3a\u662f\u6ee5\u53d1\u5e7f\u544a\u4ee5\u81f3\u8fd4\u56de\u5931\u8d25\uff0c\u8bf7\u4fee\u6539\u6635\u79f0\uff09<br \/>\nmessage.setFrom(new InternetAddress(sendMail, sendName, &#8220;UTF-8&#8221;));<br \/>\n\/\/ 3. To: \u6536\u4ef6\u4eba\uff08\u53ef\u4ee5\u589e\u52a0\u591a\u4e2a\u6536\u4ef6\u4eba\u3001\u6284\u9001\u3001\u5bc6\u9001\uff09<br \/>\nif(tolist!=null &amp;&amp; tolist.size()&gt;0) message.setRecipients(MimeMessage.RecipientType.TO, getAddr(tolist));<br \/>\nif(ccList!=null &amp;&amp; ccList.size()&gt;0) message.setRecipients(MimeMessage.RecipientType.CC, getAddr(ccList));<br \/>\nif(bccList!=null &amp;&amp; bccList.size()&gt;0) message.setRecipients(MimeMessage.RecipientType.BCC, getAddr(bccList));<br \/>\n\/\/ 4. Subject: \u90ae\u4ef6\u4e3b\u9898\uff08\u6807\u9898\u6709\u5e7f\u544a\u5acc\u7591\uff0c\u907f\u514d\u88ab\u90ae\u4ef6\u670d\u52a1\u5668\u8bef\u8ba4\u4e3a\u662f\u6ee5\u53d1\u5e7f\u544a\u4ee5\u81f3\u8fd4\u56de\u5931\u8d25\uff0c\u8bf7\u4fee\u6539\u6807\u9898\uff09<br \/>\nif(subject!=null) message.setSubject(subject, &#8220;UTF-8&#8221;);<br \/>\n\/\/ 5. Content: \u90ae\u4ef6\u6b63\u6587\uff08\u53ef\u4ee5\u4f7f\u7528html\u6807\u7b7e\uff09\uff08\u5185\u5bb9\u6709\u5e7f\u544a\u5acc\u7591\uff0c\u907f\u514d\u88ab\u90ae\u4ef6\u670d\u52a1\u5668\u8bef\u8ba4\u4e3a\u662f\u6ee5\u53d1\u5e7f\u544a\u4ee5\u81f3\u8fd4\u56de\u5931\u8d25\uff0c\u8bf7\u4fee\u6539\u53d1\u9001\u5185\u5bb9\uff09<br \/>\nif ((filelist != null &amp;&amp; filelist.size() &gt; 0) || (imagelist != null &amp;&amp; imagelist.size() &gt; 0)){<br \/>\nmessage.setContent(getMimeMultipart(content, filelist, imagelist));<br \/>\n}else{<br \/>\nmessage.setContent(content, &#8220;text\/html;charset=UTF-8&#8221;);<br \/>\n}<br \/>\n\/\/ 6. \u8bbe\u7f6e\u53d1\u4ef6\u65f6\u95f4<br \/>\nmessage.setSentDate(new Date());<br \/>\n\/\/ 7. \u4fdd\u5b58\u8bbe\u7f6e<br \/>\nmessage.saveChanges();<br \/>\nreturn message;<br \/>\n}<\/p>\n<p>private static InternetAddress[] getAddr(List&lt;String&gt; toList) throws MessagingException {<br \/>\nInternetAddress[] toAddr = new InternetAddress[toList.size()];<br \/>\nfor (int i = 0; i &lt; toList.size(); i++) {<br \/>\ntoAddr[i] = new InternetAddress(toList.get(i));<br \/>\n}<br \/>\nreturn toAddr;<br \/>\n}<\/p>\n<p>private static MimeMultipart getMimeMultipart(String content,<br \/>\nList&lt;String&gt; filelist, List&lt;String&gt; imagelist)<br \/>\nthrows MessagingException, UnsupportedEncodingException {<br \/>\n\/\/ 5.1 \u6b63\u6587<br \/>\nMimeBodyPart text = new MimeBodyPart();<br \/>\ntext.setContent(content, &#8220;text\/html;charset=UTF-8&#8221;);<br \/>\nMimeMultipart mm = new MimeMultipart();<br \/>\nmm.setSubType(&#8220;mixed&#8221;);<\/p>\n<p>\/\/ 5.2 \u56fe\u7247<br \/>\nif (imagelist != null &amp;&amp; imagelist.size() &gt; 0) {<br \/>\nMimeMultipart content_imagepart = new MimeMultipart();<br \/>\nMimeMultipart imagemultipart = new MimeMultipart();<br \/>\nfor (String attrfile : imagelist) {<br \/>\nMimeBodyPart images = new MimeBodyPart();<br \/>\nFileDataSource fdatasource = new FileDataSource(attrfile);<br \/>\nimages.setDataHandler(new DataHandler(fdatasource));<br \/>\nimages.setDisposition(MimeBodyPart.INLINE);<br \/>\nimages.addHeader(&#8220;Content-ID&#8221;, MimeUtility<br \/>\n.encodeText(fdatasource.getName()));<br \/>\nimages.addHeader(&#8220;Content-Type&#8221;, &#8220;image&#8221;);<br \/>\nimagemultipart.addBodyPart(images);<\/p>\n<p>}<br \/>\n\/\/ \u56fe\u7247+\u6b63\u6587<br \/>\nMimeBodyPart imagebodypart = new MimeBodyPart();<br \/>\nimagebodypart.setContent(imagemultipart);<br \/>\ncontent_imagepart.addBodyPart(text);<br \/>\ncontent_imagepart.addBodyPart(imagebodypart);<br \/>\ncontent_imagepart.setSubType(&#8220;related&#8221;);<br \/>\n\/\/ 5.4 (\u6b63\u6587+\u56fe\u7247)\u548c\u9644\u4ef6\u5173\u7cfb<br \/>\nMimeBodyPart bodycontentpart = new MimeBodyPart();<br \/>\nbodycontentpart.setContent(content_imagepart);<br \/>\nmm.addBodyPart(bodycontentpart);<br \/>\n}<\/p>\n<p>\/\/ 5.3 \u9644\u4ef6<br \/>\nif (filelist != null &amp;&amp; filelist.size() &gt; 0) {<br \/>\nMimeBodyPart bodyfilepart = new MimeBodyPart();<br \/>\nMimeMultipart filepart = new MimeMultipart();<br \/>\nfor (String attrfile : filelist) {<br \/>\nMimeBodyPart mbpFile = new MimeBodyPart();<br \/>\nFileDataSource fdatasource = new FileDataSource(attrfile);<br \/>\nmbpFile.setDataHandler(new DataHandler(fdatasource));<br \/>\nmbpFile.setFileName(MimeUtility.encodeText(fdatasource.getName()));<br \/>\nfilepart.addBodyPart(mbpFile);<br \/>\n}<br \/>\nbodyfilepart.setContent(filepart);<br \/>\n\/\/ 5.4 (\u6b63\u6587+\u56fe\u7247)\u548c\u9644\u4ef6\u5173\u7cfb<br \/>\nmm.addBodyPart(text);<br \/>\nmm.addBodyPart(bodyfilepart);<br \/>\n}<\/p>\n<p>return mm;<br \/>\n}<\/p>\n<p>public static List&lt;String&gt; getAdminEmailAddr(){<br \/>\nString[] toListArr = mailConfig.getProperty(&#8220;admin.mail&#8221;).split(&#8220;,&#8221;);<br \/>\nList&lt;String&gt; tolist = Arrays.asList(toListArr);<br \/>\nreturn tolist;<br \/>\n}<\/p>\n<p>@SuppressWarnings(&#8220;unchecked&#8221;)<br \/>\npublic static void saveSendMailList(List&lt;MailEntity&gt; mailList){<br \/>\nList&lt;String&gt; sqlList = new ArrayList&lt;String&gt;();<br \/>\nString sql= &#8220;&#8221;;<br \/>\nMap&lt;String, String&gt; mailMap = null;<br \/>\nfor(MailEntity mail:mailList){<br \/>\ntry {<br \/>\nmailMap = BeanUtils.describe(mail);<br \/>\n} catch (Exception e) {<br \/>\ne.printStackTrace();<br \/>\n}<br \/>\nmailMap.remove(&#8220;class&#8221;);<br \/>\nsql= WorkFlowFunction.makeSaveSQL(mailMap, null, &#8220;sent_mail_history&#8221;, &#8220;id&#8221;);<br \/>\nsqlList.add(sql);<br \/>\n}<br \/>\nWorkFlowFunction.executeSQLBatch(sqlList);<br \/>\n}<\/p>\n<p>\/**<br \/>\n* \u83b7\u53d6\u90ae\u4ef6\u6a21\u677f<br \/>\n* @return<br \/>\n*\/<br \/>\npublic static Map&lt;String,MailTemplate&gt; getMailModuleMap(){<br \/>\nRecordSetDataSource rsds = WorkFlowFunction.getDBConnection();<br \/>\nString sql=&#8221;select id,mouldSubject,mouldtext from DocMailMould&#8221;;<br \/>\nList&lt;Map&lt;String,String&gt;&gt; tmplList = WorkFlowFunction.selectListFromDB(rsds, sql, null);<\/p>\n<p>Map&lt;String,MailTemplate&gt; moduleMap = new HashMap&lt;String,MailTemplate&gt;();<br \/>\nfor(Map&lt;String,String&gt; map:tmplList){<br \/>\nMailTemplate tmpl = new MailTemplate();<br \/>\nString id = map.get(&#8220;id&#8221;);<br \/>\ntmpl.setId(id);<br \/>\ntmpl.setSubject(map.get(&#8220;mouldSubject&#8221;));<br \/>\ntmpl.setText(map.get(&#8220;mouldtext&#8221;));<\/p>\n<p>tmpl.setId(map.get(&#8220;id&#8221;));<br \/>\nmoduleMap.put(id, tmpl);<br \/>\n}<br \/>\nreturn moduleMap;<br \/>\n}<\/p>\n<p>\/**<br \/>\n* \u83b7\u53d6\u90ae\u4ef6\u6a21\u677f<br \/>\n* @return<br \/>\n*\/<br \/>\npublic static MailTemplate getMailModuleMap(String id){<br \/>\nMap&lt;String,MailTemplate&gt; moduleMap = getMailModuleMap();<br \/>\nreturn moduleMap.get(id);<br \/>\n}<\/p>\n<p>public static MailEntity pkgMail(MailTemplate template,Map&lt;String,Object&gt; datas,List&lt;String&gt; tolist){<br \/>\nList&lt;List&lt;String&gt;&gt; receiveList = new ArrayList&lt;List&lt;String&gt;&gt;();<br \/>\nreceiveList.add(tolist);<br \/>\nreceiveList.add(null);<br \/>\nreceiveList.add(null);<br \/>\nreturn packageMail(template, datas, receiveList);<br \/>\n}<\/p>\n<p>public static MailEntity packageMail(MailTemplate template,Map&lt;String,Object&gt; datas,List&lt;List&lt;String&gt;&gt; receiveList){<br \/>\nString subjectTemp = template.getSubject();<br \/>\nString contentTemp = template.getText();<br \/>\ncontentTemp+=&#8221;&lt;div&gt;&lt;\/div&gt;&lt;div&gt;&lt;span style=\\&#8221;color: rgb(255, 0, 0);\\&#8221;&gt;\u6e29\u99a8\u63d0\u793a\uff1a\u6b64\u90ae\u4ef6\u7531\u7cfb\u7edf\u81ea\u52a8\u53d1\u51fa\uff0c\u8bf7\u52ff\u56de\u590d\uff01&lt;\/span&gt;&lt;\/div&gt;&#8221;;<br \/>\n\/\/ \u89e3\u6790\u5b57\u7b26\u4e32\u6a21\u677f\u7684\u65b9\u6cd5\uff0c\u5e76\u8fd4\u56de\u5904\u7406\u540e\u7684\u5b57\u7b26\u4e32<br \/>\nString subject = FreeMarkerUtil.processStringTemplate(subjectTemp, datas, null);<br \/>\nString content = FreeMarkerUtil.processStringTemplate(contentTemp, datas, null);<br \/>\nreturn new MailEntity(receiveList.get(0), receiveList.get(1), receiveList.get(2),&#8221;\u7ba1\u7406\u5458&#8221;, subject, content, null, null);<br \/>\n}<\/p>\n<p>\/\/ public static void main(String[] args) {<br \/>\n\/\/ List&lt;String&gt; tolist = new ArrayList&lt;String&gt;();<br \/>\n\/\/ tolist.add(&#8220;xx@xx.com&#8221;);<br \/>\n\/\/ List&lt;String&gt; cclist = new ArrayList&lt;String&gt;();<br \/>\n\/\/ String sendName = null;<br \/>\n\/\/ String subject = &#8220;test001&#8243;;<br \/>\n\/\/<br \/>\n\/\/ \/\/String content =&#8221;&lt;img src=&#8217;D:\/stone\/aaa.jpg&#8217;\/&gt;content&#8230;..&#8221;;<br \/>\n\/\/ List&lt;String&gt; filepathlist = new ArrayList&lt;String&gt;();<br \/>\n\/\/ filepathlist.add(&#8220;D:\/work_line\/JDK\/LICENSE&#8221;);<br \/>\n\/\/ List&lt;String&gt; imagelist = new ArrayList&lt;String&gt;();<br \/>\n\/\/ imagelist.add(&#8220;d:\/stone\/aaa.jpg&#8221;);<br \/>\n\/\/<br \/>\n\/\/ FileDataSource fdatasource = new FileDataSource(&#8220;d:\/stone\/aaa.jpg&#8221;);<br \/>\n\/\/ logger.info(fdatasource);<br \/>\n\/\/ String content = &#8220;&lt;img src='&#8221;+fdatasource.getName()+&#8221;&#8216;\/&gt;aaaaaaa&#8221;; \/\/\u5185\u5bb9<br \/>\n\/\/<br \/>\n\/\/<br \/>\n\/\/ Mail.sendMail(tolist, cclist, sendName, subject, content, null, imagelist);<br \/>\n\/\/ }<\/p>\n<p>}<\/p>\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>package com.xxx.util.mail;<\/p>\n<p>import java.util.List;<\/p>\n<p>public class MailEntity {<br \/>\nprivate List&lt;String&gt; tolist;<br \/>\nprivate List&lt;String&gt; cclist;<br \/>\nprivate List&lt;String&gt; bcclist;<br \/>\nprivate String sendName;<br \/>\nprivate String subject;<br \/>\nprivate String content;<br \/>\nprivate List&lt;String&gt; filepathlist;<br \/>\nprivate List&lt;String&gt; imagelist;<br \/>\nprivate String remark;<\/p>\n<p>public MailEntity(List&lt;String&gt; tolist, List&lt;String&gt; cclist,<br \/>\nList&lt;String&gt; bcclist, String sendName, String subject,<br \/>\nString content, List&lt;String&gt; filepathlist, List&lt;String&gt; imagelist) {<br \/>\nsuper();<br \/>\nthis.tolist = tolist;<br \/>\nthis.cclist = cclist;<br \/>\nthis.bcclist = bcclist;<br \/>\nthis.sendName = sendName;<br \/>\nthis.subject = subject;<br \/>\nthis.content = content;<br \/>\nthis.filepathlist = filepathlist;<br \/>\nthis.imagelist = imagelist;<br \/>\n}<br \/>\npublic List&lt;String&gt; getTolist() {<br \/>\nreturn tolist;<br \/>\n}<br \/>\npublic List&lt;String&gt; getCclist() {<br \/>\nreturn cclist;<br \/>\n}<br \/>\npublic String getSendName() {<br \/>\nreturn sendName;<br \/>\n}<br \/>\npublic String getSubject() {<br \/>\nreturn subject;<br \/>\n}<br \/>\npublic String getContent() {<br \/>\nreturn content;<br \/>\n}<br \/>\npublic List&lt;String&gt; getFilepathlist() {<br \/>\nreturn filepathlist;<br \/>\n}<br \/>\npublic List&lt;String&gt; getImagelist() {<br \/>\nreturn imagelist;<br \/>\n}<br \/>\npublic void setTolist(List&lt;String&gt; tolist) {<br \/>\nthis.tolist = tolist;<br \/>\n}<br \/>\npublic void setCclist(List&lt;String&gt; cclist) {<br \/>\nthis.cclist = cclist;<br \/>\n}<br \/>\npublic void setSendName(String sendName) {<br \/>\nthis.sendName = sendName;<br \/>\n}<br \/>\npublic void setSubject(String subject) {<br \/>\nthis.subject = subject;<br \/>\n}<br \/>\npublic void setContent(String content) {<br \/>\nthis.content = content;<br \/>\n}<br \/>\npublic void setFilepathlist(List&lt;String&gt; filepathlist) {<br \/>\nthis.filepathlist = filepathlist;<br \/>\n}<br \/>\npublic void setImagelist(List&lt;String&gt; imagelist) {<br \/>\nthis.imagelist = imagelist;<br \/>\n}<br \/>\npublic List&lt;String&gt; getBcclist() {<br \/>\nreturn bcclist;<br \/>\n}<br \/>\npublic void setBcclist(List&lt;String&gt; bcclist) {<br \/>\nthis.bcclist = bcclist;<br \/>\n}<br \/>\npublic String getRemark() {<br \/>\nreturn remark;<br \/>\n}<br \/>\npublic void setRemark(String remark) {<br \/>\nthis.remark = remark;<br \/>\n}<\/p>\n<p>}<\/p>\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>package com.xxx.util.mail;<\/p>\n<p>public class MailTemplate {<br \/>\nprivate String id;<br \/>\nprivate String subject;<br \/>\nprivate String text;<\/p>\n<p>public String getId() {<br \/>\nreturn id;<br \/>\n}<br \/>\npublic void setId(String id) {<br \/>\nthis.id = id;<br \/>\n}<br \/>\npublic String getSubject() {<br \/>\nreturn subject;<br \/>\n}<br \/>\npublic String getText() {<br \/>\nreturn text;<br \/>\n}<br \/>\npublic void setSubject(String subject) {<br \/>\nthis.subject = subject;<br \/>\n}<br \/>\npublic void setText(String text) {<br \/>\nthis.text = text;<br \/>\n}<\/p>\n<p>}<\/p>\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>\/util\/mail\/mailconf.properties<\/p>\n<p>mail.transport.protocol=smtp<br \/>\n#mail.smtp.host=0.0.0.0<br \/>\nmail.smtp.host=xxx.com<br \/>\nmail.smtp.auth=true<br \/>\nmail.username=xxx@xxx.com<br \/>\nmail.password=000000000<\/p>\n<p>admin.mail=admin@admin.com<\/p>\n","protected":false},"excerpt":{"rendered":"<p>package com.xxx.util; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.xxx.util.mail.MailEntity; import com.xxx.util.mail.MailTemplate; import &#8230; <a title=\"[java] java mail \u90ae\u4ef6\u53d1\u9001\u5de5\u5177\u7c7b\" class=\"read-more\" href=\"http:\/\/22pig.com\/?p=154\" aria-label=\"More on [java] java mail \u90ae\u4ef6\u53d1\u9001\u5de5\u5177\u7c7b\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-154","post","type-post","status-publish","format-standard","hentry","category-java"],"_links":{"self":[{"href":"http:\/\/22pig.com\/index.php?rest_route=\/wp\/v2\/posts\/154","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/22pig.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/22pig.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/22pig.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/22pig.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=154"}],"version-history":[{"count":0,"href":"http:\/\/22pig.com\/index.php?rest_route=\/wp\/v2\/posts\/154\/revisions"}],"wp:attachment":[{"href":"http:\/\/22pig.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/22pig.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=154"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/22pig.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}