springboot+JavaMail用163和阿里云企业邮箱的smtp服务都可以发送邮件,区别在于发送人的邮箱地址。用163免费邮箱,收件人看到的发件邮箱是XXX@163.com,用阿里云企业邮箱可以用自己的域名,例如account@mydomain.com。当然,也可以用其它的免费企业邮箱。
前期准备工作做个简单描述。
1、163准备工作
去163申请免费邮箱
开通pop3/smtp服务,记下授权码,一会儿要用到
2、阿里云企业邮箱
去阿里云申请免费企业邮箱
建邮箱账号
下面正式开始
3、引入java mail starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
4、163邮箱的application.yml配置
spring:
mail:
host: smtp.163.com
port: 25
username: XXXX@163.com ## 这里是完整的邮箱地址
password: 授权码 ## 这里需要用到刚才提到的163邮箱pop3/smtp服务的授权码
properties:
mail:
debug: false ## 调试时这里可以用true,可以看到发送邮箱的整个流程调试信息
smtp:
ssl:
trust: smtp.163.com
auth: true
starttls:
enable: true ## 这里用true
required: true ## 这里用true
5、阿里云企业邮箱的application.yml配置
spring:
mail:
host: smtp.mxhichina.com
port: 587 ## 注意:这里的端口要用587,在阿里云ECS上才能正常发送邮件,ECS服务器开通587端口
username: account@mydomain.com ## 这里是完整的企业邮箱地址
password: 邮箱密码 ## 注意:这里是该邮箱密码,跟163邮箱不一样,阿里云没有授权码!!!
properties:
mail:
debug: false ## 调试时这里可以用true,可以看到发送邮箱的整个流程调试信息
smtp:
ssl:
trust: smtp.mxhichina.com
auth: true
starttls:
enable: false ## 这里用false,跟163邮箱配置不一样
required: false ## 这里用false,跟163邮箱配置不一样
6、两者的配置区别
端口:163用25,阿里云企业邮箱用587
password:163用授权码,阿里云企业邮箱用邮箱账号密码
starttls.enable、starttls.required:163配置true,阿里云企业邮箱配置false
7、中文别名
中文别名的格式:中文别名<邮箱地址>,例如:打字狗通行证<account@dazigo.vip>
public boolean SendMail(String receiver, String topic, String content) {
JavaMailSender mailSender = (JavaMailSender) SpringContextUtils.getBean("mailSender");
MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(message, true);
// 设置发送方带别名的邮箱地址
String String from = "打字狗通行证<account@dazigo.vip>";
helper.setFrom(from); helper.setTo(receiver);
helper.setSubject(topic); helper.setText(content, true);
mailSender.send(message); return true;
} catch (MessagingException e) {
e.printStackTrace(); return false;
}}
想练打字的朋友可以去我的网站:打字狗(dazigo.vip)在线练习打字