歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Spring發送html郵件

Spring發送html郵件

日期:2017/3/1 10:21:13   编辑:Linux編程
本文基於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. import java.util.Properties;
  8. import javax.mail.MessagingException;
  9. import javax.mail.Session;
  10. import javax.mail.internet.MimeMessage;
  11. import org.springframework.mail.javamail.JavaMailSenderImpl;
  12. import org.springframework.mail.javamail.MimeMessageHelper;
  13. /**
  14. *
  15. * @author geloin
  16. * @date 2012-5-8 上午11:02:41
  17. */
  18. public class MailUtil {
  19. /**
  20. * 發送html郵件
  21. *
  22. * @author geloin
  23. * @date 2012-5-8 上午11:38:44
  24. * @param toEmail
  25. * @param subject
  26. * @param htmlContent
  27. */
  28. public static void sendMail(String toEmail, String subject,
  29. String htmlContent) {
  30. JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
  31. // 發送郵箱的郵件服務器
  32. senderImpl.setHost(Constants.emailHost);
  33. // 建立郵件消息,發送簡單郵件和html郵件的區別
  34. MimeMessage mailMessage = senderImpl.createMimeMessage();
  35. // 為防止亂碼,添加編碼集設置
  36. MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,
  37. "UTF-8");
  38. try {
  39. // 接收方郵箱
  40. messageHelper.setTo(toEmail);
  41. } catch (MessagingException e) {
  42. throw new RuntimeException("收件人郵箱地址出錯!");
  43. }
  44. try {
  45. // 發送方郵箱
  46. messageHelper.setFrom(Constants.emailFrom);
  47. } catch (MessagingException e) {
  48. throw new RuntimeException("發件人郵箱地址出錯!");
  49. }
  50. try {
  51. messageHelper.setSubject(subject);
  52. } catch (MessagingException e) {
  53. throw new RuntimeException("郵件主題出錯!");
  54. }
  55. try {
  56. // true 表示啟動HTML格式的郵件
  57. messageHelper.setText(htmlContent, true);
  58. } catch (MessagingException e) {
  59. throw new RuntimeException("郵件內容出錯!");
  60. }
  61. Properties prop = new Properties();
  62. // 將這個參數設為true,讓服務器進行認證,認證用戶名和密碼是否正確
  63. prop.put("mail.smtp.auth", "true");
  64. // 超時時間
  65. prop.put("mail.smtp.timeout", "25000");
  66. // 添加驗證
  67. MyAuthenticator auth = new MyAuthenticator(Constants.emailUsername,
  68. Constants.emailPassword);
  69. Session session = Session.getDefaultInstance(prop, auth);
  70. senderImpl.setSession(session);
  71. // senderImpl.setJavaMailProperties(prop);
  72. // 發送郵件
  73. senderImpl.send(mailMessage);
  74. }
  75. }
以上代碼中,發送郵箱的郵件服務器、發送方郵箱、發送方用戶名、發送方郵箱密碼均來自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