在前面介绍了怎样使用Apache Commons Email方一封简单的纯文本的邮件。但是在实际应用中,邮件可能需要包括附件。如:包含Word文件、图片、压缩文件等。这里将介绍怎样发送一封带有附件的邮件。
项目结构图:

代码如下:
package com.bug315;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.MultiPartEmail;
public class AttachementEmailTest {
public static void main(String[] args) {
try {
// 发送人邮箱地址和密码
String fromSMTP = "smtp.163.com";
String fromEmail = "***@163.com";
String fromPwd = "futkp***";
// 收件人邮箱地址
String toEmail = "***@qq.com";
// 创建一个带有图片附件
EmailAttachment attachmentImg = new EmailAttachment();
attachmentImg.setPath("document/150606.png");
attachmentImg.setDisposition(EmailAttachment.ATTACHMENT);
attachmentImg.setDescription("Email测试项目结构图");
attachmentImg.setName("Email项目");
// 创建一个带有压缩包的附件
EmailAttachment attachmentJar = new EmailAttachment();
attachmentJar.setPath("document/email-1.4.jar");
attachmentJar.setDisposition(EmailAttachment.ATTACHMENT);
attachmentJar.setDescription("Apache Commons Email项目的jar包");
attachmentJar.setName("Commons Email");
// 创建一个网络加载图片附件
EmailAttachment attachmentUri = new EmailAttachment();
attachmentUri.setURL(new URL("https://www.hxstrive.com/hxstrivedocs/2015/06/07/1037120419_1.png"));
attachmentUri.setDisposition(EmailAttachment.ATTACHMENT);
attachmentUri.setDescription("来自网络图片");
attachmentUri.setName("网络图片");
// 创建邮件信息
MultiPartEmail email = new MultiPartEmail();
email.setHostName(fromSMTP);
email.setAuthentication(fromEmail, fromPwd);
email.setFrom(fromEmail, "lishi");
email.addTo(toEmail, "zhangsan");
email.setSubject("通过邮件发送附件测试");
email.setMsg("这封邮件包含两个附件:1、一种图片;2、一个压缩包jar文件");
// 将附件设置到邮件中
email.attach(attachmentImg);
email.attach(attachmentJar);
email.attach(attachmentUri);
// 发送
email.send();
System.out.println("发送成功");
} catch (Exception e) {
e.printStackTrace();
}
}
}