在前面介绍了怎样使用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(); } } }