📄 mailsendhtml.java
字号:
package com.digipower.automail.mailsender;/** * <p>Title: </p> * <p>Description: TestStruts</p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: foxconn</p> * @author conti * @version 1.0 */import java.util.ArrayList;import javax.mail.internet.*;import javax.mail.*;import javax.activation.*;import java.util.Iterator;import java.io.*;public class MailSendHtml extends SendMail { private ArrayList arrayList1 = new ArrayList(); private ArrayList arrayList2 = new ArrayList(); public MailSendHtml(String smtpHost, String username, String password) { super(smtpHost, username, password); multipart = new MimeMultipart("related"); } public void setMailContent(String mailContent) throws MessagingException { String htmlContent = getContent("<img ", mailContent);//System.out.println(htmlContent); //1 messageBodyPart.setContent(htmlContent, "text/html;charset=GBK"); multipart.addBodyPart(messageBodyPart); //调用处理html文件中的图片方法 processHtmlImage(mailContent); } //处理html页面上的图片方法如下: private void processHtmlImage(String mailContent) throws MessagingException { for (int i = 0; i < arrayList1.size(); i++) { messageBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource(this.unSendMailPath + (String) arrayList1.get(i)); messageBodyPart.setDataHandler(new DataHandler(source)); String contentId = "<" + (String) arrayList2.get(i) + ">";//System.out.println(contentId); messageBodyPart.setHeader("Content-ID", contentId); //messageBodyPart.setFileName( MimeUtility.encodeText((String) arrayList1.get(i))); try { messageBodyPart.setFileName(MimeUtility.encodeText((String)arrayList1.get(i))); } catch(Exception e) { } multipart.addBodyPart(messageBodyPart); } } //处理要发送的html文件,主要是针对html文件中的图片 private String getContent(String searchString, String mailContent) { String afterReplaceStr = ""; String content = mailContent; String sub = ""; String end = ""; String rpstring = ""; int k = 0; int n = 0; int m = 0; for (int i = 0; i < mailContent.length(); i++) { i = content.indexOf(searchString); if (i != -1) { content = content.substring(i); n = content.indexOf(">"); sub = content.substring(1, n); k = sub.indexOf("src=\""); if (k == -1) { k = sub.indexOf("src=") + 4; end = " "; } else { end = "\""; k = k + 5; } m = sub.indexOf(end, k);//System.out.println(m); rpstring = sub.substring(k, m); if (rpstring.startsWith("http")) { System.out.println("不需要处理:" + rpstring); } else { arrayList1.add(rpstring); } content = content.substring(m+1); }else{ i =mailContent.length(); } } afterReplaceStr = mailContent; //在html文件中用"cid:"+Content-ID来替换原来的图片链接 for (int c = 0; c < arrayList1.size(); c++) { arrayList2.add(createRandomStr()); String addString = "cid:" + (String) arrayList2.get(c); mailContent=mailContent.replaceFirst((String) arrayList1.get(c), addString); afterReplaceStr = mailContent; } return afterReplaceStr; } //产生一个随机字符串,为了给图片设定Content-ID值 private String createRandomStr() { char[] randomChar = new char[8]; for (int i = 0; i < 8; i++) { randomChar[i] = (char) (Math.random() * 26 + 'a'); } String replaceStr = new String(randomChar); return replaceStr; } /** * 从HTML文件中得到邮件内容 * @param htmlFilePath String * @return String */ public String getHtmlFromFile(String htmlFilePath) { StringBuffer htmlBuffer = new StringBuffer(); try { File htmlFile = new File(htmlFilePath); FileReader fr = new FileReader(htmlFile); BufferedReader in = new BufferedReader(fr); String inLine; while ( (inLine = in.readLine()) != null) { htmlBuffer.append(inLine); } } catch (IOException e) { System.out.println(e.getMessage()); } return htmlBuffer.toString(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -