一、实战
1 邮箱准备工作
下面以qq邮箱做示例,其他邮箱同理
1.1 登录邮箱进入找到设置
1.2 找到邮箱中的POP3/IMAP/SMTP服务设置,并开启POP3/SMTP,IMAP/SMTP服务
此时,邮箱设置已经完成。
1.3 最后查看qq邮箱POP3和SMTP服务器
邮箱 | POP3服务器(端口995) | SMTP服务器(端口465或587) |
---|---|---|
qq.com | pop.qq.com | smtp.qq.com |
其他邮箱都可以在官方找到其对应得服务器地址。
注:如需了解POP3、SMTP、IMAP协议,可以查看第三部分。
2 代码实战
2.1 搭建spring boot项目
引入spring-boot-starter-mail依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.2 邮件配置
配置application.properties中的
#邮箱服务器地址
spring.mail.host=smtp.qq.com
#用户名
spring.mail.username=XXXXX@qq.com
#密码
spring.mail.password=XXXXXXX
# hudmmejunplchdea
spring.mail.default-encoding=UTF-8
spring.mail.port=587
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
#以谁来发送邮件
mail.fromMail.addr=XXXXXX@qq.com
2.3 编写发送邮件服务及其实现类
通过spring boot mail 提供的JavaMailSender实现
package com.ganhuojun.demo.service;
import java.io.ByteArrayOutputStream;
public interface MailService {
/**
* 发送邮件
* @param to 目的地
* @param subject 主题
* @param content 内容
* @param os 附件
* @param attachmentFilename 附件名
* @throws Exception
*/
public void sendMail(String to, String subject, String content, ByteArrayOutputStream os, String attachmentFilename, Boolean isHtml) throws Exception;
public void sendMail(String[] to, String subject, String content, ByteArrayOutputStream os, String attachmentFilename, Boolean isHtml) throws Exception;
}
实现类
package com.ganhuojun.demo.service.impl;
import com.ganhuojun.demo.service.MailService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.InputStreamSource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import javax.mail.internet.MimeMessage;
import java.io.ByteArrayOutputStream;
@Component
public class MailServiceImpl implements MailService {
private static Logger logger = LoggerFactory.getLogger(MailServiceImpl.class);
@Autowired
private JavaMailSender mailSender;
@Value("${mail.fromMail.addr}")
private String from;
@Override
public void sendMail(String to, String subject, String content, ByteArrayOutputStream os, String attachmentFilename, Boolean isHtml) throws Exception {
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper =