Java帶圖片的郵件發送方法實現
package sendEmail;import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.PasswordAuthentication; 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; public class AttchImgMail { // JavaMail需要Properties來創建一個session對象。它將尋找字符串"mail.smtp.host",屬性值就是發送郵件的主機. public static void main(String[] args) throws Exception { Properties properties = new Properties(); // properties.put("mail.smtp.host", "mailcas.chinapnr.com");// 設置smtp主機 properties.put("mail.smtp.host", "smtp.163.com");// 設置smtp主機 properties.put("mail.smtp.auth", "true");// 使用smtp身份驗證 /* * 在 JavaMail 中,可以通過 extends Authenticator 抽象類,在子類中覆蓋父類中的 * getPasswordAuthentication() 方法,就可以實現以不同的方式來進行登錄郵箱時的用戶身份認證。JavaMail * 中的這種設計是使用了策略模式(Strategy */ MimeMessage message = new MimeMessage(Session.getInstance(properties, new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(//設置發送帳號密碼 "帳號", "密碼"); } })); // 設置郵件的屬性 // 設置郵件的發件人 message.setFrom(new InternetAddress("發件人")); // 設置郵件的收件人 cc表示抄送 bcc 表示暗送 message.setRecipient(Message.RecipientType.TO, new InternetAddress( "收件人")); // 設置郵件的主題 message.setSubject("系統自動發送郵件"); // 創建郵件的正文 MimeBodyPart text = new MimeBodyPart(); // setContent(“郵件的正文內容”,”設置郵件內容的編碼方式”) text.setContent("此郵件為系統自動發送<img src='cid:a'><img src='cid:b'>", "text/html;charset=gb2312"); // 點到點的發送 // 一對多發送只要改一個地方如下: // // 構建一個群發地址數組 // InternetAddress[] adr=new InternetAddress[toMore.length]; // for(int i=0;i<toMore.length;i++){ adr[i]=new // InternetAddress(toMore[i]); } // // Message的setRecipients方法支持群發。。注意:setRecipients方法是復數和點 到點不一樣 // message.setRecipients(Message.RecipientType.TO,adr); // 創建圖片 MimeBodyPart img = new MimeBodyPart(); /* * JavaMail API不限制信息只為文本,任何形式的信息都可能作繭自縛MimeMessage的一部分. * 除了文本信息,作為文件附件包含在電子郵件信息的一部分是很普遍的. JavaMail * API通過使用DataHandler對象,提供一個允許我們包含非文本BodyPart對象的簡便方法. */ DataHandler dh = new DataHandler(new FileDataSource("src//a.jpg"));//圖片路徑 img.setDataHandler(dh); // 創建圖片的一個表示用于顯示在郵件中顯示 img.setContentID("a"); MimeBodyPart img2 = new MimeBodyPart(); DataHandler dh2 = new DataHandler(new FileDataSource("src//b.jpg"));//第二張圖片路徑 img2.setDataHandler(dh2); img2.setContentID("b"); // 創建附件 // MimeBodyPart attch = new MimeBodyPart(); // DataHandler dh1 = new DataHandler(new FileDataSource("src//b.jpg")); // attch.setDataHandler(dh1); // String filename1 = dh1.getName(); // MimeUtility 是一個工具類,encodeText()用于處理附件字,防止中文亂碼問題 // attch.setFileName(MimeUtility.encodeText(filename1)); // 關系 正文和圖片的 MimeMultipart mm = new MimeMultipart(); mm.addBodyPart(text); mm.addBodyPart(img); mm.setSubType("related");// 設置正文與圖片之間的關系 // 圖班與正文的 body MimeBodyPart all = new MimeBodyPart(); all.setContent(mm); // 附件與正文(text 和 img)的關系 MimeMultipart mm2 = new MimeMultipart(); mm2.addBodyPart(all); mm2.addBodyPart(img2); mm2.setSubType("mixed");// 設置正文與附件之間的關系 message.setContent(mm2); message.saveChanges(); // 保存修改 Transport.send(message);// 發送郵件 System.out.println("郵件發送成功"); } } </pre>Java發送帶圖片的郵件,代碼為發生2張圖片的郵件關聯方式,注釋中有發送帶附件、帶多人發生解析的代碼,可以自行調整。<br />
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!