spring-mvc 配置
spring 配置
mailsender.properties
Email.java
-
package com.zerdoor.util;
-
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.core.io.ClassPathResource;
-
import org.springframework.mail.SimpleMailMessage;
-
import org.springframework.mail.javamail.JavaMailSender;
-
import org.springframework.mail.javamail.MimeMessageHelper;
-
-
import javax.mail.internet.MimeMessage;
-
-
/**
-
*
-
*/
-
public
class Email {
-
private JavaMailSender javaMailSender;
-
private SimpleMailMessage simpleMailMessage;
-
-
/**
-
* @方法名: sendMail
-
* @參數名:@param subject 郵件主題
-
* @參數名:@param content 郵件主題內容
-
* @參數名:@param from 發件人Email地址
-
* @參數名:@param to 收件人Email地址
-
* @描述語: 發送郵件
-
*/
-
public void sendMail(String subject, String content, String from,String to) {
-
-
try {
-
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
-
/**
-
* new MimeMessageHelper(mimeMessage,true)之true個人見解:
-
* 關於true參數,官方文檔是這樣解釋的:
-
* use the true flag to indicate you need a multipart message
-
* 翻譯過來就是:使用true,以表明你需要多個消息
-
* 再去翻一下MimeMessageHelper的API,找到這樣一句話:
-
* supporting alternative texts, inline elements and attachments
-
* 也就是說,如果要支持內聯元素(HTML)和附件就必須給定第二個參數為true
-
* 否則拋出 java.lang.IllegalStateException 異常
-
*/
-
/**
-
* 剛開始收到郵件顯示中文亂碼,於是趕緊查看官方文檔,沒有提到,再查閱API,也沒有查到Set編碼的方法,
-
* 於是就在HTML里面自己指定編碼,也不起作用,郵件還是顯示中文亂碼;
-
* 最后的結論是:如果HTML內容含有中文必須指定HTML的編碼,默認是ISO-8859-1,所以會顯示中文亂碼
-
* 在MimeMessageHelper的構造方法中找到:
-
* MimeMessageHelper(MimeMessage mimeMessage, boolean multipart, String encoding)
-
* 實驗一下,OK,原來編碼是在這兒設置,沒事了,中文正常顯示
-
*/
-
MimeMessageHelper messageHelper =
new MimeMessageHelper(mimeMessage,
true,
"UTF-8");
-
messageHelper.setFrom(from);
//設置發件人Email
-
messageHelper.setSubject(subject);
//設置郵件主題
-
messageHelper.setText(content);
//設置郵件主題內容
-
messageHelper.setTo(to);
//設定收件人Email
-
-
// messageHelper.setText(
-
// "<html>" +
-
// "<body>" + content +
-
// "</body>" +
-
// "</html>", true);
-
//步驟 1
-
//資源的引用方法:cid:你自己設置的資源ID
-
// messageHelper.setText(
-
// "<html>" +
-
// "<body>" +
-
// "<BR>" +
-
// "<div align='center'>" +
-
// "<img src='cid:imageid'/>" +
-
// "<BR>" +
-
// "<h4>" +
-
// "返回 fancydeepin 的Blogjava:" +
-
// "<a href='http://www.blogjava.net/fancydeepin/'>http://www.blogjava.net/fancydeepin/</a>" +
-
// "</h4>" +
-
// "</div>" +
-
// "</body>" +
-
// "</html>", true);
-
/**
-
* ClassPathResource:很明顯就是類路徑資源,我這里的附件是在項目里的,所以需要用ClassPathResource
-
* 如果是系統文件資源就不能用ClassPathResource,而要用FileSystemResource,例:
-
* FileSystemResource file = new FileSystemResource(new File("D:/woniu.png"));
-
*/
-
/**
-
* 如果想在HTML中使用資源,必須在HTML中通過資源 ID 先引用資源,然后才來加載資源
-
*/
-
//步驟 2
-
// ClassPathResource image = new ClassPathResource("images/body.png");
-
// messageHelper.addInline("imageid", image);
-
javaMailSender.send(mimeMessage);
//發送HTML郵件
-
-
}
catch (Exception e) {
-
System.out.println(
"異常信息:" + e);
-
}
-
}
-
//Spring 依賴注入
-
public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {
-
this.simpleMailMessage = simpleMailMessage;
-
}
-
//Spring 依賴注入
-
public void setJavaMailSender(JavaMailSender javaMailSender) {
-
this.javaMailSender = javaMailSender;
-
}
-
}
使用的時候直接調用