以下代码可以复制直接使用,目前自己正在使用
发送邮件的依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.4</version>
</dependency>
实现的原理
邮件内容是html,在邮件内容中需要带图的地方写
<img src="cid:cid的值">
换成代码就是
String cid = "1111";
StringBuilder sb = new StringBuilder();
sb.append("测试图片发送
\r\n");
sb.append("
).append(cid).append("\">");
String mailContent = sb.toString();
发送邮件的工具类,可以直接用
package com.test;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.HtmlEmail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.activation.DataSource;
import java.util.Date;
public class EmailUtil {
private static Logger logger = LoggerFactory.getLogger(EmailUtil.class);
/**
* 发送给谁
*/
private String toUser = "xxx";
/**
* 抄送给谁
*/
private String ccUser = "xxx";
/**
* 密送给谁
*/
private String bccUser = "";
/**
* host
*/
private String host = "邮箱host";
/**
* auth
*/
private String auth = "true";
/**
* port
*/
private String port = "25";
/**
* username
*/
private String username = "发送邮件的邮箱";
/**
* password
*/
private String password = "密码";
/**
* type
*/
private String contentType = "UTF-8";
public boolean sendMail(MailInfo content){
boolean iscoorect=false;
String[] to=toUser.contains(",")?toUser.split(","):new String[] {toUser};
String[] cc=ccUser.contains(",")?ccUser.split(","):new String[] {ccUser};
String[] bcc=bccUser.contains(",")?bccUser.split(","):new String[] {bccUser};
try {
HtmlEmail mail = new HtmlEmail();
// 设置邮箱服务器信息
mail.setSmtpPort(Integer.parseInt(port));
mail.setHostName(host);
// 设置密码验证器
mail.setAuthentication(username, password);
// 设置邮件发送者
mail.setFrom(username);
// 设置邮件接收者
mail.addTo(to);
if(StringUtils.isNoneBlank(bcc)) {
mail.addBcc(bcc);
}
if(StringUtils.isNoneBlank(cc)) {
mail.addCc(cc);
}
// 设置邮件编码
mail.setCharset(contentType);
// 设置邮件主题
if(StringUtils.isNoneBlank(content.subject)){
mail.setSubject(content.subject);
}
// 邮件内容
if(StringUtils.isNoneBlank(content.msg)){
mail.setHtmlMsg(content.msg);
}
// 插入图片资源
String[] cids = content.cids;
if(cids != null){
DataSource[] ds = content.ds;
for (int i = 0; i < cids.length; i++) {
mail.embed(ds[i], cids[i]);
}
}
// 创建附件
if(StringUtils.isNotBlank(content.attachmentPath) && StringUtils.isNotBlank(content.attachmentName)){
EmailAttachment attachment = new EmailAttachment();
attachment.setPath(content.attachmentPath);
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setName(content.attachmentName);
mail.attach(attachment);
}
// 设置邮件发送时间
mail.setSentDate(new Date());
// 发送邮件
mail.send();
logger.info("发送成功");
iscoorect=true;
}catch(Exception e) {
logger.info("发送失败,异常:{}", e);
}
return iscoorect;
}
public static class MailInfo{
/**
* 附件名称
*/
public String attachmentName;
/**
* 附件路径
*/
public String attachmentPath;
public String subject;
/**
* html邮件内容,包涵所有的信息,上面提到的图片内嵌的标签也在这里
*/
public String msg;
/**
* 邮件中插入的图片cid,引用方式为 