之前用过 springboot 自带的发送邮件,发送一个简单邮件需要11s+,而使用 javax.mail 只需要不到2s,暂时不清楚原因。
在项目的根目录下的 pom.xml 中加入以下内容:
<!--邮件发送--> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4</version> </dependency>
在项目的 resource 文件夹下的 application.properties 中加入以下内容:
## 邮箱配置 # 邮箱stmp spring.mail.host=smtp.qq.com # 你的qq邮箱 spring.mail.username=xxxxx@qq.com # 注意这里不是邮箱密码,而是SMTP授权密码 spring.mail.password=xxxxx
注意:这里的 host 以 qq 邮箱为例,其他邮箱需要做出相应的修改,如163邮箱:smtp.163.com
SMTP 授权码的获取方式:
import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; 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.Properties; /** * @program: xxx * @description: 发送邮件工具类 * @author: z2devil * @create: 2021-05-19 **/ @Service @RequiredArgsConstructor public class MailUtils { @Value("${spring.mail.host}") private String host; @Value("${spring.mail.username}") private String username; @Value("${spring.mail.password}") private String password; /** * 简单文本邮件 * @param to 接收者邮件 * @param subject 邮件主题 * @param content 邮件内容 */ public void sendSimpleMail(String to, String subject, String content) throws Exception { Properties prop = new Properties(); prop.setProperty("mail.host", host); prop.setProperty("mail.transport.protocol", "smtp"); prop.setProperty("mail.smtp.auth", "true"); // 使用JavaMail发送邮件的5个步骤 // 1、创建session Session session = Session.getInstance(prop); // 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态 session.setDebug(false); // 2、通过session得到transport对象 Transport ts = session.getTransport(); // 3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。 ts.connect(host, username, password); // 4、创建邮件 MimeMessage message = new MimeMessage(session); // 指明邮件的发件人 message.setFrom(new InternetAddress(username)); // 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发 message.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 邮件的标题 message.setSubject(subject); // 邮件的文本内容 message.setContent(content, "text/html;charset=UTF-8"); // 5、发送邮件 ts.sendMessage(message, message.getAllRecipients()); ts.close(); } }
mailUtils.sendSimpleMail("xxxxx@qq.com", "这里是标题", "这里是内容");