Java邮件发送
基于springboot实现邮件发送
基于spring-boot-starter-mail实现,普通邮件发送无需额外依赖引入,因我所使用功能涉及模板发送,所以还需要引入spring-boot-starter-freemarker依赖。
相关版本
springboot:2.3.2.RELEASE
spring-boot-starter-mail:2.2.0.RELEASE
下面是相关代码整理
有更好的方案或者优化点可以评论指出
邮件发送接口MailService
import com.ai.demo.entity.EmailMsg;
/**
*
* @author: xs
* @date: 2020/9/21 15:10
* @description:
*/
public interface MailService {
/**
* 发送普通邮件
* @param msg
*/
void sendMail(EmailMsg msg);
}
邮件发送实现代码MailServiceImpl
邮件发送实现类中的DateUtils类为普通的自定义时间工具类,就不贴代码了
import cn.hutool.extra.template.TemplateException;
import com.ai.demo.entity.EmailMsg;
import com.ai.demo.service.MailService;
import com.ai.demo.util.DateUtils;
import freemarker.template.Template;
import freemarker.template.TemplateNotFoundException;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import javax.annotation.Resource;
import javax.mail.Address;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
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;
/**
*
* @author: xs
* @date: 2020/9/21 15:11
* @description:
*/
@Service
@Slf4j
public class MailServiceImpl implements MailService {
@Value("${spring.mail.username}")
private String sendFrom;
@Resource
private JavaMailSender mailSender;
@Autowired
private FreeMarkerConfigurer configurer;
@Override
public void sendMail(EmailMsg msg) {
log.