0、相關(guān)協(xié)議
- SMTP(Simple Mail Transfer Protocol):簡單郵件傳輸協(xié)議,用于發(fā)送電子郵件的傳輸協(xié)議
- POP3(Post Office Protocol - Version 3):用于接收電子郵件的標準協(xié)議
- IMAP(Internet Mail Access Protocol):互聯(lián)網(wǎng)消息協(xié)議,是POP3的替代協(xié)議
1、SpringBoot整合JavaMail
STEP1:
加入JavaMail起步依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
STEP2:
相關(guān)配置:
spring:
mail:
host: smtp.qq.com # 發(fā)郵件,smtp協(xié)議,后面.運營商
username: *********@qq.com
password: ********* # 不是郵箱的密碼,是下面獲取的一個授權(quán)碼
注意password,不是郵箱的登錄密碼,是一個授權(quán)碼,獲取方式,在QQ郵箱中是【設(shè)置】-【郵箱賬號】-【開啟】
發(fā)送驗證短信:
然后在上個頁面點保存更改,(記得點保存更改)復制這個授權(quán)碼就是password的值,即可配置郵件客戶端成功。
其他類型的郵箱獲取方式類似,比如163:
STEP3:
注入JavaMailSender對象,定義發(fā)送郵件的接口
@Autowired
private JavaMailSender javaMailSender;
整合完成,下面按簡單郵件和復雜郵件來寫。簡單即普通文本,復雜即超鏈接、附件等。
2、發(fā)送簡單郵件
以下用QQ郵箱給163郵箱發(fā)一個簡單文本的郵件:
//定義接口
public interface SendMailService{
void sendMail();
}
//實現(xiàn)類
@Service
public class SendMailServiceImpl implements SendMailService {
@Autowired
private JavaMailSender javaMailSender;
//這些值也可以不硬編碼,寫在配置文件中@Value取值
private String from = "********@qq.com"; // 發(fā)送人
private String to = "********@126.com"; // 接收人
private String subject = "測試郵件"; // 郵件主題
private String text = "測試郵件正文"; // 郵件內(nèi)容
@Override
public void sendMail() {
SimpleMailMessage mailMessage = new SimpleMailMessage();
//mailMessage.setFrom(from);
//from后面加個名字,比如xxx公司,不然發(fā)送發(fā)一串郵箱數(shù)字,誰知道你是誰
mailMessage.setFrom(from + "別名");
//這里的to是個可變長String,即可發(fā)送多人
mailMessage.setTo(to);
mailMessage.setSubject(subject);
mailMessage.setText(text);
//mailMessage.setSendDate(); //設(shè)置發(fā)送的時間
//其他設(shè)置自行set
javaMailSender.send(mailMessage); //發(fā)送
}
}
寫個測試類看下效果:
聯(lián)不通:
我在公司內(nèi)網(wǎng)寫的,網(wǎng)絡(luò)不通,不是25端口被禁的原因,在外網(wǎng)是可以ping通smtp.qq.com這個host的。先跳過了。
3、發(fā)送復雜郵件
正文為html,比如超鏈接或者圖片。以及發(fā)送附件:文章來源:http://www.zghlxwxcb.cn/news/detail-728536.html
//超鏈接
private String text = "<a ;
//圖片
private String img = "<img src='https://pic35.photophoto.cn/20150511/0034034892281415_b.jpg' />";
@Override
public void sendMail() {
try {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
//第二個參數(shù),即是否允許添加多部件
//我后面要添加各種附件,所以這里必須是true
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
mimeMessageHelper.setFrom(from);
mimeMessageHelper.setTo(to);
mimeMessageHelper.setSubject(subject);
//不加true,默認當普通文本,true即按html來解析
mimeMessageHelper.setText(text,true);
//添加附件
File file1 = new File("logo.png");
File file2 = new File("D:\\myboot.jar");
//如果是手寫文件名,記得添加個后綴,比如.png,方便在郵件里可預覽
mimeMessageHelper.addAttachment(file1.getName(),file1);
mimeMessageHelper.addAttachment("一個jar包.jar",file2);
javaMailSender.send(mimeMessage);
} catch (Exception e) {
e.printStackTrace();
}
}
注意點:文章來源地址http://www.zghlxwxcb.cn/news/detail-728536.html
- 不再用簡單消息對象,而是MimeMessage對象,并把它包裝成mimeMessageHelper對象
- 要傳附件的話,mimeMessageHelper對象構(gòu)造方法的第二個參數(shù)傳true
- setText方法重載,第二個參數(shù)傳true,就是講text按照html來解析,而不是普通文本
- 注意最后send的還是MimeMessage對象,不是mimeMessageHelper對象
到了這里,關(guān)于【開發(fā)篇】十六、SpringBoot整合JavaMail實現(xiàn)發(fā)郵件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!