Springboot 邮件发送插件JavaMailSender

导包

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

spring配置文件

MailProperties.java

DEFAULT_CHARSET =StandardCharsets.UTF_8;
 * SMTP server host. For instance,'smtp.example.com'.
host
 * SMTP server port.
Integer port
 * Login user of the SMTP server.
String username
 * Login password of the SMTP server.
String password
 * Protocol used by the SMTP server.
String protocol ="smtp"
 * Default MimeMessage encoding.
CharsetdefaultEncoding = DEFAULT_CHARSET
 * Additional JavaMail Session properties.
final Map<String,String> properties = new HashMap<>()
 * Session JNDI name. When set, takesprecedence over other Session settings.
String jndiName;

spring:
    mail:
        host:smtp.qq.com#邮件服务器地址
        port:587#邮件服务器端口
        protocol:smtp#使用的协议
        default-encoding:UTF-8#默认编码
        username:#这个是通过邮件服务器认证的用户名和密码,不一定是邮箱,看服务器的要求
        password:#密码/授权码
        properties:#properties中的属性都是比较灵活可配置的,其实是javax.mail.Session中对应的配置项,可以参考对应文档
            mail.smtp.auth:true#如果邮件服务器需要实名需要认证开启此选项

邮件发送Java代码实现

@Autowired
JavaMailSender javaMailSender;
 
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(message, true);
mimeMessageHelper.setFrom(from);//发件人(不填可能会导致发件人空)
mimeMessageHelper.setTo(InternetAddress[]);//收件人
mimeMessageHelper.setSubject(subject);//标题
mimeMessageHelper.setText(content);//正文
mimeMessageHelper.addAttachment(fileName, file);//附件
mimeMessageHelper.setSentDate(sentDate);//发件时间,部分邮箱不生效
mimeMessageHelper.setCc(cc);//抄送
mimeMessageHelper.setBcc(bcc);//加密抄送(不会在抄送人中显示)
mimeMessageHelper.setPriority(priority);//between1(highest)and5(lowest)

javaMailSender.send(message);

经测试,mimeMessageHelper中 setReplyTo(), addInline()不生效

mimeMessageHelper.setFrom(InternetAddress);//发件人

与mimeMessageHelper.setTo(InternetAddress[]);//收件人

可传入String类型或InternetAddress类型,

当传入InternetAddress类型时可自行设置接收邮件时显示的发件人名称或接收人名称,否则可能会被接收方默认邮箱地址@前部分为名称。

可以不设置setFrom,但发件人位置会显示空。

new InternetAddress("xxx@xx.com", "XXX", "UTF-8")
//类似
mimeMessageHelper.setFrom(new InternetAddress("xxx@xx.com", "XXX", "UTF-8"));

接收邮件服务器:pop.qq.com,使用SSL,端口号995

发送邮件服务器:smtp.qq.com,使用SSL,端口号465或587(测试中465发送失败)

From: 帮助系统 (qq.com)

发送方端口号大部分为25,建议查问服务提供方帮助。

邮件协议框架 RFC822 + MIME解析

参考:RFC822:电子邮件的基本框架_51CTO博客_rfc822邮件格式

类似http请求分具体的头和内容。

header包括上面提及的配置项,ASCII格式,可通过message.getAllHeaderLines()查看设置后的内容。

content为具体的邮件内容,RFC822协议仅支持字符串。因此对邮件附件,图片之类的发送需要通过MIME实现。

Spring boot 的JMS配置参数与Javax.mail的参数基本一致,大部分情况下可以参考javax.mail的配置

javax.mail实现邮件发送

参考:

java邮件发送_neverland06的博客-CSDN博客

使用javax.mail发送邮件_gblfy的博客-CSDN博客_javax mail

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值