第二講:使用JavaMail表示MIME訊息(2)
阿新 • • 發佈:2018-12-23
public static void main(String[] args) throws AddressException, MessagingException, FileNotFoundException, IOException { String from = "[email protected]"; String to= "[email protected], [email protected]"; String body = "<h4>歡迎大家閱讀郵件</h4>" +"<a href = \"http://blog.csdn.net/wenwen1538\">歡迎訪問我的主頁</a>"; String subject = "HTML郵件"; Properties props = new Properties(); Session session = Session.getInstance(props); Message msg= new MimeMessage(session); msg.setFrom(new InternetAddress(from)); msg.setRecipients(RecipientType.TO, InternetAddress.parse(to)); msg.setSubject(subject); msg.setSentDate(new Date()); //建立代表郵件正文和附件的各個物件 MimeBodyPart contentPart = createContent(body, "D:\\蝸牛的世界.png"); MimeBodyPart attactment1 = createAttachment("D:\\create.sql"); MimeBodyPart attachment2 = createAttachment("D:\\TTPmusic\\Maroon 5 - One More Night.mp3"); //下面組合郵件正文和附件的Mimemultipart物件 MimeMultipart allMultipart = new MimeMultipart("mixed"); allMultipart.addBodyPart(contentPart); allMultipart.addBodyPart(attactment1); allMultipart.addBodyPart(attachment2); //將multipart物件設定為整個郵件的內容,要使用saveChanges進行更新 msg.setContent(allMultipart); msg.saveChanges(); //將物件寫入檔案中 msg.writeTo(new FileOutputStream("d:\\test.eml")); } public static MimeBodyPart createContent(String body, String filename) throws MessagingException{ //建立一個MimeBodyPart物件存放Mimemultipart物件 MimeBodyPart contentBodyPart = new MimeBodyPart(); //建立一個子型別為"related"的Mimemultipart物件 MimeMultipart multipart = new MimeMultipart(); multipart.setSubType("related"); //建立一個HTML正文的MimeBodyPart物件,並將其載入到Mimemultipart物件中 MimeBodyPart htmlBodyPart = new MimeBodyPart(); htmlBodyPart.setContent(body, "text/html; charset=gb2312"); multipart.addBodyPart(htmlBodyPart); //建立一個圖片內容的MimeBodyPart物件並將其加入前面建立的Mimemultipart物件中 MimeBodyPart imgBodyPart = new MimeBodyPart(); FileDataSource fds = new FileDataSource(filename); imgBodyPart.setDataHandler(new DataHandler(fds)); imgBodyPart.setContentID("uind--woniu--png-001"); multipart.addBodyPart(imgBodyPart); //將Mimemultipart物件加入到MimeBodyPart物件中 contentBodyPart.setContent(multipart); return contentBodyPart; } public static MimeBodyPart createAttachment(String filename) throws MessagingException{ //建立儲存附件的MimeBodyPart物件,並且加入附件內容和相應的資訊 MimeBodyPart attachmentPart = new MimeBodyPart(); FileDataSource fds = new FileDataSource(filename); attachmentPart.setDataHandler(new DataHandler(fds)); attachmentPart.setFileName(fds.getName()); return attachmentPart; }