1. 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2. 邮箱实体类
package com.mg.ecio.hlink.dto.ows.beans;
import lombok.Data;
import java.io.File;
@Data
public class Email {
private String senderAccount;
private String senderName;
private String password;
private String host;
private String port;
private String receiver;
private String htmlText;
private String subject;
private File file;
private String base64Content;
}
3. 邮箱工具类
private static MimeMessage getMimeMessage(JavaMailSenderImpl javaMailSender,Email email) throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
mimeMessageHelper.setFrom(email.getSenderAccount());
mimeMessageHelper.setTo(email.getReceiver());
mimeMessageHelper.setSubject(email.getSubject());
mimeMessageHelper.setText(StringTools.isEmpty(email.getHtmlText()) ? "" : email.getHtmlText(), true);
if(null != email.getFile() && email.getFile().exists()){
mimeMessageHelper.addAttachment(email.getFile().getName(), email.getFile());
}
return mimeMessage;
}
public static void sendMail(Email email){
try{
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setUsername(email.getSenderAccount());
javaMailSender.setPassword(email.getPassword());
javaMailSender.setHost(email.getHost());
javaMailSender.setPort(Integer.parseInt(email.getPort()));
javaMailSender.setProtocol("smtp");
javaMailSender.setDefaultEncoding("UTF-8");
Properties mailProperties = new Properties();
mailProperties.put("mail.smtp.auth", true);
mailProperties.put("mail.smtp.starttls.enable", true);
javaMailSender.setJavaMailProperties(mailProperties);
int count = 1;
MimeMessage mimeMessage = getMimeMessage(javaMailSender,email);
javaMailSender.send(mimeMessage);
logger.info("发送 第"+ count + "封邮件" );
count ++;
logger.info("发往 "+email.getReceiver()+" 邮件发送成功");
} catch (MessagingException e) {
logger.error("发往 "+email.getReceiver()+" 邮件发送异常", e);
}
}
4. 测试
public static void main(String[] args) {
System.out.println(DateTimeUtil.getSysDate());
File file =new File("文件地址");
String htmlText = EmailUtils.gethtml();
Email email = new Email();
email.setSenderAccount("发送方账号");
email.setPassword("发送方密码");
email.setReceiver("接收方");
email.setHtmlText(null);
email.setFile(file);
email.setHost("smtp.office365.com");
email.setPort("587");
email.setSubject("111111111");
MailUtils.sendMail(email);
System.out.println(DateTimeUtil.getSysDate());
}
5. 各邮箱的Host及Port
Outlook
Host:smtp.office365.com
Port:587
网易163
Host:smtp.163.com
Port:465或587
qq
Host:smtp.qq.com
Port:465或587
注:除Outlook之外的邮箱都需要拿到授权码作为密码