# 整合邮件发送
简单记录下如何使用Java程序发送邮件
# 邮箱准备
准备好一个已经开通SMTP服务的邮箱
这里我使用的是新浪邮箱,其他类型的邮箱应该也可以,可以去尝试一下哦
登录进来新浪邮箱后,进入邮箱设置,然后选择
开通smtp服务,然后会得到一个授权码,先把它记下来,后面要用到。
# 发送邮件
创建一个
springboot
项目,然后在pom.xml
里导入spring Email的依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>2.5.6</version> </dependency>
在
application.yml
中进行参数的配置,要特别注意,配置参数里面的password不是你邮箱密码,而是授权码
使用
JavaMailSender
发送邮件package com.lys.community.utils; 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.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; @Component public class MailClient { private static final Logger logger = LoggerFactory.getLogger(MailClient.class); @Autowired private JavaMailSender mailSender; @Value("${spring.mail.username}") private String from; /** * 封装邮件发送 * @param to 邮件接收者 * @param subject 主题 * @param content 内容 */ public void sendMail(String to, String subject, String content) { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message); try { helper.setFrom(from); helper.setTo(to); helper.setText(content, true); helper.setSubject(subject); mailSender.send(helper.getMimeMessage()); } catch (MessagingException e) { System.out.println("发送邮件失败"); e.printStackTrace(); } } }
测试
package com.lys.community; import com.lys.community.utils.MailClient; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class MailTest { @Autowired private MailClient mailClient; @Test public void test1() { mailClient.sendMail("*****@qq.com", "问候","你好啊"); } }
运行上面的测试类
这样就能接收到邮件了
# 利用thymeleaf发送html邮件
准备一个html
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>这是一个邮件内容模板</title> </head> <body> <p>很高兴认识你! <span style="color: #3a8ee6" th:text="${name}"></span> </p> </body> </html>
测试
package com.lys.community; import com.lys.community.utils.MailClient; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.thymeleaf.TemplateEngine; import org.thymeleaf.context.Context; @SpringBootTest public class MailTest { @Autowired private MailClient mailClient; @Autowired private TemplateEngine templateEngine; @Test public void testSend(){ Context context = new Context(); context.setVariable("name", "小明"); String content = templateEngine.process("/mail", context); System.out.println(content); mailClient.sendMail("1761724207@qq.com", "测试", content); } }
结果