本列是在SpringBoot的基础上建立的,有些缺省参数直接读yml文件,可适当改造
依赖的jar包:org.apache.commons:commons-lang3:3.4
org.apache.commons:commons-email:1.4
org.slf4j:slf4j-api:1.7.24
@Component
public class MailUtil {
private Logger logger = LoggerFactory.getLogger(MailUtil.class);
public static final String ENCODEING = "UTF-8";
@Value("${mail.host:mail.xs.com}")
private String host; // 服务器地址
@Value("${mail.sender:admin@xs.com}")
private String sender; // 发件人的邮箱
@Value("${mail.nickname:FIY}")
private String nickname; // 发件人昵称
@Value("${mail.username:xs}")
private String username; // 账号
@Value("${mail.password:xs}")
private String password; // 密码
public boolean send(String receiver, String ccReceiver, String subject, String message) {
if (StringUtils.isBlank(receiver) || StringUtils.isBlank(subject) || StringUtils.isBlank(message)) {
throw new PosloanException("-9911", "发送邮件接收人,主题,内容都不能为空.");
}
HtmlEmail email = new HtmlEmail();
try {
// 这里是SMTP发送服务器的名字:163的如下:"smtp.163.com"
email.setHostName(host);
// 字符编码集的设置
email.setCharset(ENCODEING);
// 收件人的邮箱
String[] list = StringUtils.split(receiver, ";");
for (String r : list) {
if (StringUtils.isNotBlank(r))
email.addTo(r);
}
if (StringUtils.isNotBlank(ccReceiver)) {
String[] ccList = StringUtils.split(ccReceiver, ";");
for (String c : ccList) {
if (StringUtils.isNotBlank(c))
email.addCc(c);
}
}
// 发送人的邮箱
email.setFrom(sender, nickname);
// 如果需要认证信息的话,设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和密码
email.setAuthentication(username, password);
// 要发送的邮件主题
email.setSubject(subject);
// 要发送的信息,由于使用了HtmlEmail,可以在邮件内容中使用HTML标签
email.setMsg(message);
// 发送
email.send();
logger.info(sender + " 发送邮件到: " + MaskUtils.maskString(receiver.toString(), MaskType.EMAIL));
return true;
} catch (EmailException e) {
logger.error(sender + " 发送邮件到: " + MaskUtils.maskString(receiver.toString(), MaskType.EMAIL) + " 失败", e);
return false;
}
}
//以HTML格式发送邮件
public boolean sendHtmlWithAttachmentMail(SendMailDto sendMailDto) {
if (sendMailDto==null || sendMailDto.getReceivers()==null || StringUtils.isBlank(sendMailDto.getSubject())
|| StringUtils.isBlank(sendMailDto.getMessage())) {
throw new PosloanException("-9911", "发送邮件接收人,主题,内容都不能为空.");
}
StringBuffer receivers = new StringBuffer();
StringBuffer ccReceivers = new StringBuffer();
HtmlEmail htmlEmail = new HtmlEmail();
htmlEmail.setHostName(sendMailDto.getSenderHost());//你的邮件服务器的地址
htmlEmail.setAuthentication(sendMailDto.getSenderUsername(), sendMailDto.getSenderPassword());//如果你的邮件服务器设置了密码,请输入密码,否则此语句可以忽略
try {
for (String r : sendMailDto.getReceivers()) {
if (StringUtils.isNotBlank(r)){
htmlEmail.addTo(r);
receivers.append("["+r+"]");
}
}
if (sendMailDto.getCcReceivers()!=null) {
for (String c : sendMailDto.getCcReceivers()) {
if (StringUtils.isNotBlank(c)){
htmlEmail.addCc(c);
ccReceivers.append(c);
}
}
}
htmlEmail.setFrom(sendMailDto.getSenderEmail(), sendMailDto.getSenderNickname());//发件人
htmlEmail.setCharset("UTF-8");
htmlEmail.setSubject(sendMailDto.getSubject());
htmlEmail.setHtmlMsg(sendMailDto.getMessage());
//是否上传附件
if(sendMailDto.getAttachments()!=null){
for(AttachmentDto attachmentDto : sendMailDto.getAttachments()){
if(StringUtils.isNotBlank(attachmentDto.getAttachmentPath())
&& StringUtils.isNotBlank(attachmentDto.getAttachmentShowName())){
EmailAttachment attachment = new EmailAttachment();
/* try {
attachment.setURL(new URL("http://www.apache.org/images/asf_logo_wide.gif"));
} catch (MalformedURLException e) {
e.printStackTrace();
}*/
String attachmentPath = attachmentDto.getAttachmentPath();
attachment.setPath(attachmentPath);
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription(attachmentDto.getAttachmentShowName());
attachment.setName("attachment."+attachmentPath.substring(attachmentPath.lastIndexOf(".")+1));
htmlEmail.attach(attachment);//附件
}
}
}
if(sendMailDto.getFiles()!=null){
for(File file :sendMailDto.getFiles()){
htmlEmail.attach(file);
}
}
htmlEmail.send();//发送邮件
logger.info(sender + " 发送邮件到: " + MaskUtils.maskString(receivers.toString(), MaskType.EMAIL)
+ ",cc: " + MaskUtils.maskString(ccReceivers.toString(), MaskType.EMAIL));
return true;
} catch (EmailException e) {
logger.error(sender + " 发送邮件到: " + MaskUtils.maskString(receivers.toString(), MaskType.EMAIL)
+ ",cc: " + MaskUtils.maskString(ccReceivers.toString(), MaskType.EMAIL) + " 失败", e);
return false;
}
}
}