2、搭建一个springboot项目
1、pom文件:
<!-- 邮件-->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.4</version>
</dependency>
2、application.yml配置文件:
# Spring配置
# 数据源配置
spring:
mail:
host: smtp.exmail.qq.com
protocol: smtp
port: 465
# username: 123456@qq.com #邮箱地址
# password: 123456 #PO3/SMTP服务时邮箱的授权码
username: 123456@test.com #邮箱地址
password: 123456 #PO3/SMTP服务时邮箱的授权码
properties:
mail:
smtp:
auth: true
ssl:
enable: true
socketFactory:
class: com.sun.mail.util.MailSSLSocketFactory
fallback: false
3、邮件业务层
接口:
public interface MailService {
/**
* 发送邮箱
* @param email
* @param content
* @return 成功返回1 失败返回0
*/
int sendEmail(String email, String content);
/**
* 发送邮箱
* @param toEmail 发送到哪一个邮箱
* @param bytes 附件字节数组
* @param attachName 邮件名称
* @param content 邮件的内容
* @return 成功返回1 失败返回0
*/
int sendEmail(String toEmail,byte[] bytes,String attachName,String content);
}
实现:
@Service
@Slf4j
public class MailServiceImpl implements MailService {
@Autowired
private JavaMailSender javaMailSender;
@Value("${spring.mail.username}")
private String from;
@Override
public int sendEmail(String email, String content) {
try {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
//发送者邮箱地址
message.setFrom(from);
//收件人邮箱地址
message.setTo(email);
message.setSubject("大帅哥");
message.setText(content, true);
javaMailSender.send(mimeMessage);
} catch (Exception e) {
log.error("发送邮件验证码失败,异常信息:{}",e.getMessage,e);
return 0;
}
return 1;
}
@Override
public int sendEmail(String toEmail, byte[] bytes,String attachName,String content) {
try {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper message = new MimeMessageHelper(mimeMessage,true,"utf-8");
//发送者邮箱地址
message.setFrom(from);
//收件人邮箱地址
message.setTo(toEmail);
// 邮件附件
message.addAttachment(MimeUtility.encodeWord(attachName), new ByteArrayResource(bytes));
message.setSubject("大帅哥");
message.setText(content, true);
javaMailSender.send(mimeMessage);
} catch (Exception e) {
log.error("发送邮件验证码失败,异常信息:{}",e.getMessage,e);
return 0;
}
return 1;
}
}
4、使用邮件携带附件时,附件的名称可能为乱码
通过这一段代码 MimeUtility.encodeWord(attachName) 即可解决乱码问题