这是一个小的发送emai的案例,供大家参考,具体内容如下
代码里面放了很多注解,这里多说无益。
发送邮件实体类:
package com.yqx.emaildemo.demo;
import lombok.Data;
import org.apache.commons.mail.EmailAttachment;
import java.util.List;
/**
* 发送邮件实体类
*
* @author YangChingyu-k
* @date 2019/10/10 14:59
*/
@Data
public class MailInfo {
/**
* 收件人
*/
private List<String> toAddress = null;
/**
* 抄送人地址
*/
private List<String> ccAddress = null;
/**
* 密送人
*/
private List<String> bccAddress = null;
/**
* 附件信息
*/
private List<EmailAttachment> emailAttachments = null;
/**
* 邮件主题
*/
private String subject;
/**
* 邮件文本内容
*/
private String content;
public void addToAddress(String toAddress) {
this.toAddress.add(toAddress);
}
public void addToAddress(List<String> toAddress) {
this.toAddress.addAll(toAddress);
}
public void addCcAddress (List<String> ccAddress) {
if (!ccAddress.isEmpty()) {
this.ccAddress.addAll(ccAddress);
}
}
}
工具类:
package com.yqx.emaildemo.demo;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.HtmlEmail;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* 发送邮件辅助工具类
*
* @author YangChingyu-k
* @date 2019/10/10 15:12
*/
public class MailUtil {
/**
* 邮箱
*/
private static String mailServerHost = "smtp.qq.com";
private static String mailSenderAddress = "xxx@qq.com";
private static String mailSenderNick = "YangChingyu-k";
private static String mailSenderUserName = "xxx@qq.com";
// 这里的密码是开启服务之后的授权码
private static String mailSenderPassWord = "xxx";
/**
* 发送邮件(Html格式,支持附件)
*
* @param mailInfo
*/
public static void sendMail(MailInfo mailInfo) {
try {
// 利用jar包中提供的HtmlEmail类
HtmlEmail email = new HtmlEmail();
// 配置信息
// 这里用的是QQ邮箱的地址,不同的邮箱采用的地址不同,官方有说明
email.setHostName(mailServerHost);
// 发送的地址,发送者昵称
email.setFrom(mailSenderAddress, mailSenderNick);
// 用户名,密码(这里的密码不是登录密码,而是开启POP3/SMTP服务之后获取的授权密码)
email.setAuthentication(mailSenderUserName, mailSenderPassWord);
// 编码
email.setCharset("UTF-8");
// 主题
email.setSubject(mailInfo.getSubject());
// 内容
email.setHtmlMsg(mailInfo.getContent());
// 添加附件
List<EmailAttachment> emailAttachments = mailInfo.getEmailAttachments();
if (!emailAttachments.isEmpty()) {
for (int i=0; i<emailAttachments.size(); i++) {
email.attach(emailAttachments.get(i));
}
}
// 收件人
List<String> toAddress = mailInfo.getToAddress();
if (!toAddress.isEmpty()) {
for (int i=0; i<toAddress.size(); i++) {
email.addTo(toAddress.get(i));
}
}
// 抄送人
List<String> ccAddress = mailInfo.getCcAddress();
if (!ccAddress.isEmpty()) {
for (int i=0; i<ccAddress.size(); i++) {
email.addCc(ccAddress.get(i));
}
}
// 密送人
List<String> bccAddress = mailInfo.getBccAddress();
if (!bccAddress.isEmpty()) {
for (int i=0; i<bccAddress.size(); i++) {
email.addBcc(bccAddress.get(i));
}
}
// 如果官方邮件关闭了,可以使用SSL的方式发送
// 使用QQ邮箱是暂时不需要的
// email.setSSLOnConnect(true);
// 发送
email.send();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("发送时间:" + sdf.format(new Date()));
System.out.println("发送人:" + mailSenderNick);
if (!toAddress.isEmpty()) {
for (int i=0;i<toAddress.size();i++) {
System.out.println("接收人:" + toAddress.get(i));
}
}
System.out.println("邮件发送成功...");
System.out.println("端口:" + email.getSmtpPort());
} catch (Exception e) {
System.out.println("邮件发送失败, error: " + e.getMessage());
e.printStackTrace();
}
}
}










