Springboot使用Javamail发送邮件
介绍
JavaMail 是SUN公司提供给广大Java开发人员的一款邮件发送和接受的一款开源类库,官网地址https://www.oracle.com/java/technologies/javamail.html
springboot整合JavaMail
引入依赖包
<!--Email相关开始-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.5.0</version>
</dependency>
<!--Email相关结束-->
修改配置文件
我这里使用的是163邮箱
server:
port: 8080
spring:
mail:
host: smtp.163.com
port:
username: 邮箱
password: 授权码
default-encoding: UTF-8
protocol: smtp
代码实现
import au.com.koalaclass.email.core.entity.EmailTemplate;
import au.com.koalaclass.email.core.repository.EmailTemplateRepository;
import au.com.koalaclass.email.core.service.EmailTemplateService;
import au.com.koalaclass.email.core.service.MailService;
import freemarker.cache.StringTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.apache.tomcat.jni.Local;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.HashMap;
import java.util.Locale;
/**
* @Author : luzhiyong
* @CreateTime : 2021/7/13
* @Description :
**/
@Service
public class MailServiceImpl implements MailService {
//邮件的发送者
@Value("${spring.mail.username}")
private String from;
//注入MailSender
@Resource
private JavaMailSender javaMailSender;
//发送邮件的模板引擎
@Resource
private FreeMarkerConfigurer configurer;
@Resource
private EmailTemplateService emailTemplateService;
/**
* @param params 发送邮件的主题对象 object
* @param title 邮件标题
* @param templateName 模板名称
*/
@Override
public void sendMessageMail(Object params, String title, String templateName) {
try {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setFrom(from);
//发送给谁
helper.setTo(InternetAddress.parse("luzhiyong@erfou.com"));
//邮箱标题
helper.setSubject("【" + title + "-" + LocalDate.now() + " " + LocalTime.now().withNano(0) + "】");
//text是发送的内容
helper.setText(text, true);
//发送消息
javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}