JavaMail邮件发送
风喃海北 人气:01.引入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>2.5.5</version> </dependency>
2.邮件发送工具类
package com.test; import lombok.Builder; import lombok.Data; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.Date; import java.util.Properties; /** * 邮件工具 * @author visy.wang * @date 2021/10/18 11:13 */ public class MailUtil { private static final String USER = "发件人邮箱地址"; private static final String PASS = "发件人邮箱密码"; private static final String HOST = "smtp.xxx.com"; //邮件服务器地址 private static final String PORT = "465"; //SSL连接端口:465,普通连接:25 private static final Properties PROPERTIES = new Properties(); //连接邮件服务器的参数配置 static { //设置用户的认证方式 PROPERTIES.setProperty("mail.smtp.auth", "true"); //设置传输协议 PROPERTIES.setProperty("mail.transport.protocol", "smtp"); //设置发件人的SMTP服务器地址 PROPERTIES.setProperty("mail.smtp.host", HOST); //使用SSL安全连接(如果不使用SSL,以下配置可省略, 默认端口是25) PROPERTIES.setProperty("mail.smtp.port", PORT); PROPERTIES.setProperty("mail.smtp.socketFactory.port", PORT); PROPERTIES.setProperty("mail.smtp.socketFactory.fallback", "false"); PROPERTIES.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); } @Data @Builder public static class MyMessage{ private String to; private String subject; private String content; } public static void send(MyMessage message) throws Exception{ //2、创建定义整个应用程序所需的环境信息的 Session 对象 Session session = Session.getInstance(PROPERTIES); //设置调试信息在控制台打印出来 session.setDebug(true); //3、创建邮件的实例对象 Message msg = getMessage(session, message); //4、根据session对象获取邮件传输对象Transport Transport transport = session.getTransport(); //设置发件人的账户名和密码 transport.connect(USER, PASS); //发送邮件,并发送到所有收件人地址,message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人 transport.sendMessage(msg, msg.getAllRecipients()); //如果只想发送给指定的人,可以如下写法 //transport.sendMessage(msg, new Address[]{new InternetAddress("xxx@qq.com")}); //5、关闭邮件连接 transport.close(); } private static MimeMessage getMessage(Session session, MyMessage message) throws Exception{ //创建一封邮件的实例对象 MimeMessage msg = new MimeMessage(session); //设置发件人地址 msg.setFrom(new InternetAddress(USER)); /** * 设置收件人地址(可以增加多个收件人、抄送、密送),即下面这一行代码书写多行 * MimeMessage.RecipientType.TO:发送 * MimeMessage.RecipientType.CC:抄送 * MimeMessage.RecipientType.BCC:密送 */ msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(message.getTo())); //设置邮件主题 msg.setSubject(message.getSubject(),"UTF-8"); //设置邮件正文 msg.setContent(message.getContent(), "text/html;charset=UTF-8"); //设置邮件的发送时间,默认立即发送 msg.setSentDate(new Date()); return msg; } }
3.发送测试
public static void main(String[] args) throws Exception{ MailUtil.send( MailUtil.MyMessage.builder() .to("收件人邮箱地址") .subject("邮件主题") .content("邮件内容<b>支持HTML标签</b>") .build() ); }
4.注意点
要使用某个邮件服务器发送邮件,需要先在邮箱中开通对用的服务:即开启 SMTP服务。
本文并不是springboot的使用方式,springboot的方式更简单,只需在application.yml中配置好,然后注入一个发送者即可。
加载全部内容