记录下邮件发送的实现,方便初学者参考,实现方式多种多样,本文采用的是SpringBoot架构
引入依赖
org.springframework.boot spring-boot-starter-mail
package test;
import test.BusinessException;
import test.ErrorCodeEnum;
import test.TerminalEmailDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.List;
@Service
@Slf4j
public class MailServiceImpl {
@Autowired
private JavaMailSender mailSender;
public void sendEmailTest(TestEmailDTO emailDTO) throws BusinessException {
log.info("邮件发送 emailDTO:{}", emailDTO);
if(null==emailDTO|| StringUtils.isBlank(emailDTO.getSubject())){
throw new BusinessException(-1,"发送邮件主题不能为空");
}
if(StringUtils.isBlank(emailDTO.getContent())){
throw new BusinessException(-1,"发送邮件内容不能为空");
}
if(null==emailDTO.getToAddress() || emailDTO.getToAddress().size()<1){
throw new BusinessException(-1,"接收人地址不能为空");
}
sendEmail(emailDTO);
}
public void sendEmail(TestEmailDTO emailDTO)throws BusinessException{
log.info("调用发送邮件工具方法=== emailDTO:{}", emailDTO);
try{
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
mimeMessageHelper.setFrom(emailDTO.getFromAddress());
mimeMessageHelper.setTo(getAddress(emailDTO.getToAddress()));
mimeMessageHelper.setSentDate(new Date());
InternetAddress[] bccArray = getAddress(emailDTO.getBccAddress());
if(bccArray != null) {
mimeMessageHelper.setBcc(bccArray);
}
InternetAddress[] ccArray = getAddress(emailDTO.getCcAddress());
if (ccArray != null) {
mimeMessageHelper.setCc(ccArray);
}
//邮件主题
mimeMessageHelper.setSubject(emailDTO.getSubject());
//邮件正文内容
mimeMessageHelper.setText(emailDTO.getContent());
mailSender.send(mimeMessage);
} catch (MessagingException e) {
log.error("发送邮件失败--邮件信息错误 eMsg:{}", e.getMessage());
} catch (MailException e) {
log.error("发送邮件失败--邮件格式错误或邮箱无效 eMsg:{}", e.getMessage());
}catch (Exception e){
log.error("发送邮件失败 error:{}", e.getMessage());
throw new BusinessException(-1,"发送邮件失败--"+e.getMessage());
}
}
private InternetAddress[] getAddress(List strList) throws AddressException {
InternetAddress[] internetAddress = null;
if(!CollectionUtils.isEmpty(strList)) {
internetAddress = new InternetAddress[strList.size()];
for(int i = 0 ; i < strList.size(); i++ ) {
internetAddress[i] = new InternetAddress(strList.get(i));
}
}
return internetAddress;
}
}



