这是一个小的发送emai的案例,供大家参考,具体内容如下
代码里面放了很多注解,这里多说无益。
发送邮件实体类:
package com.yqx.emaildemo.demo;
import lombok.Data;
import org.apache.commons.mail.EmailAttachment;
import java.util.List;
@Data
public class MailInfo {
private List toAddress = null;
private List ccAddress = null;
private List bccAddress = null;
private List emailAttachments = null;
private String subject;
private String content;
public void addToAddress(String toAddress) {
this.toAddress.add(toAddress);
}
public void addToAddress(List toAddress) {
this.toAddress.addAll(toAddress);
}
public void addCcAddress (List 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;
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";
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 emailAttachments = mailInfo.getEmailAttachments();
if (!emailAttachments.isEmpty()) {
for (int i=0; i toAddress = mailInfo.getToAddress();
if (!toAddress.isEmpty()) {
for (int i=0; i ccAddress = mailInfo.getCcAddress();
if (!ccAddress.isEmpty()) {
for (int i=0; i bccAddress = mailInfo.getBccAddress();
if (!bccAddress.isEmpty()) {
for (int i=0; i
测试main方法:
package com.yqx.emaildemo.demo;
import org.apache.commons.mail.EmailAttachment;
import java.util.ArrayList;
import java.util.List;
public class MainTest {
public static void main(String[] args) {
MailInfo mailInfo = new MailInfo();
// 收件人
List toList = new ArrayList<>();
toList.add("xxx.com");
// 抄送人
List ccList = new ArrayList<>();
ccList.add("xxx@qq.com");
// 密送人
List bccList = new ArrayList<>();
bccList.add("xxx@qq.com");
// 添加附件
EmailAttachment emailAttachment = new EmailAttachment();
// 文件全路径
emailAttachment.setPath("C:/Users/YangChingyu-k/Desktop/lemon.txt");
// 附件:文件全名 (文件名 + .格式)
emailAttachment.setName("这是一个测试的附件.txt");
// 多个附件
List emailAttachments = new ArrayList<>();
emailAttachments.add(emailAttachment);
mailInfo.setEmailAttachments(emailAttachments);
// 收件人
mailInfo.setToAddress(toList);
// 抄送人
mailInfo.setCcAddress(ccList);
// 密送人
mailInfo.setBccAddress(bccList);
// 主题
mailInfo.setSubject("This is a object");
// 内容
mailInfo.setContent("这是一段测试的内容~");
// 调用工具类方法进行发送
MailUtil.sendMail(mailInfo);
}
}
我觉得注释应该写得很清楚了吧,这是作为一个demo来写的,分享一下,在写的时候一直遇到找不到地址之类的,或者服务没开之类的报错,这里都写了注重点的东西,这是第一次在代码里面一直写很多注释。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



