歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Spring發送html郵件

本文基於Spring 注解,讓Spring跑起來

        容器:tomcat6

        (1) 導入jar包mail.jar、activation.jar和org.springframework.comtext.support.jar,其中mail.jar來自於javaMail,activation.jar來自於jaf,最好都使用最新版。

        (2) 編寫MailUtil類作為郵件發送的工具類:

  1. /** 
  2.  * 
  3.  * @author geloin 
  4.  * @date 2012-5-8 上午11:02:41 
  5.  */  
  6. package com.embest.ruisystem.util;  
  7.   
  8. import java.util.Properties;  
  9.   
  10. import javax.mail.MessagingException;  
  11. import javax.mail.Session;  
  12. import javax.mail.internet.MimeMessage;  
  13.   
  14. import org.springframework.mail.javamail.JavaMailSenderImpl;  
  15. import org.springframework.mail.javamail.MimeMessageHelper;  
  16.   
  17. /** 
  18.  *  
  19.  * @author geloin 
  20.  * @date 2012-5-8 上午11:02:41 
  21.  */  
  22. public class MailUtil {  
  23.   
  24.     /** 
  25.      * 發送html郵件 
  26.      *  
  27.      * @author geloin 
  28.      * @date 2012-5-8 上午11:38:44 
  29.      * @param toEmail 
  30.      * @param subject 
  31.      * @param htmlContent 
  32.      */  
  33.     public static void sendMail(String toEmail, String subject,  
  34.             String htmlContent) {  
  35.   
  36.         JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();  
  37.   
  38.         // 發送郵箱的郵件服務器   
  39.         senderImpl.setHost(Constants.emailHost);  
  40.   
  41.         // 建立郵件消息,發送簡單郵件和html郵件的區別   
  42.         MimeMessage mailMessage = senderImpl.createMimeMessage();  
  43.         // 為防止亂碼,添加編碼集設置   
  44.         MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,  
  45.                 "UTF-8");  
  46.   
  47.         try {  
  48.             // 接收方郵箱   
  49.             messageHelper.setTo(toEmail);  
  50.         } catch (MessagingException e) {  
  51.             throw new RuntimeException("收件人郵箱地址出錯!");  
  52.         }  
  53.         try {  
  54.             // 發送方郵箱   
  55.             messageHelper.setFrom(Constants.emailFrom);  
  56.         } catch (MessagingException e) {  
  57.             throw new RuntimeException("發件人郵箱地址出錯!");  
  58.         }  
  59.         try {  
  60.             messageHelper.setSubject(subject);  
  61.         } catch (MessagingException e) {  
  62.             throw new RuntimeException("郵件主題出錯!");  
  63.         }  
  64.         try {  
  65.             // true 表示啟動HTML格式的郵件   
  66.             messageHelper.setText(htmlContent, true);  
  67.         } catch (MessagingException e) {  
  68.             throw new RuntimeException("郵件內容出錯!");  
  69.         }  
  70.   
  71.         Properties prop = new Properties();  
  72.         // 將這個參數設為true,讓服務器進行認證,認證用戶名和密碼是否正確   
  73.         prop.put("mail.smtp.auth""true");  
  74.         // 超時時間   
  75.         prop.put("mail.smtp.timeout""25000");  
  76.   
  77.         // 添加驗證   
  78.         MyAuthenticator auth = new MyAuthenticator(Constants.emailUsername,  
  79.                 Constants.emailPassword);  
  80.   
  81.         Session session = Session.getDefaultInstance(prop, auth);  
  82.         senderImpl.setSession(session);  
  83.   
  84.         // senderImpl.setJavaMailProperties(prop);   
  85.         // 發送郵件   
  86.         senderImpl.send(mailMessage);  
  87.   
  88.     }  
  89.   
  90. }  
        以上代碼中,發送郵箱的郵件服務器、發送方郵箱、發送方用戶名、發送方郵箱密碼均來自Constants類,該類從資源文件中獲取相關數據並設為類中常量的值,資源環境中的名值對如下所示:
  1. email.from=abc@163.com  
  2. email.host=smtp.163.com  
  3. email.username=abc  
  4. email.password=abcdefg  
        其中,email.host為發送方郵箱的發送服務器,163郵箱為smtp.163.com,若使用別的郵箱而未知服務器,則可使用foxmail等工具測試得出結果,或者問渡娘。

        上述代碼中很重要的片段如下:

  1. // 添加驗證   
  2. MyAuthenticator auth = new MyAuthenticator(Constants.emailUsername, Constants.emailPassword);  
  3. Session session = Session.getDefaultInstance(prop, auth);  
  4. senderImpl.setSession(session);  
        上述代碼的作用為添加驗證,在使用郵箱服務器發送郵件時,需要驗證發送方的用戶名和密碼,驗證成功後,郵箱服務器才允許發送郵件。若不加上此代碼,則會出現AuthenticationFailedException異常。         MyAuthenticator為自定義的驗證類,該類代碼如下所示:
Copyright © Linux教程網 All Rights Reserved