一、项目整体结构
二、新建Demo3
下面的邮件包括附件(名称为中文名)、回信地址、好友名称等。
具体代码如下:
package javamail;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
/**
* 开发比较复杂的邮件
*/
public class Demo3 {
public static void main(String[] args) throws Exception {
Session session = Session.getInstance(new Properties());
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress
("\"" + MimeUtility.encodeText("网易邮箱") + "\" <**********@163.com>"));
//设置回信信息
msg.setReplyTo(new Address[]{
new InternetAddress("************@163.com")
});
//设置邮件收件人
msg.setRecipients(RecipientType.TO,
InternetAddress.parse(
MimeUtility.encodeText("卡卡罗特的163")
+ " <*************@163.com>,"
+ MimeUtility.encodeText("卡卡罗特的QQ")
+ "************@qq.com"));
//设置邮件主题
msg.setSubject("你们的Java培训真的是最牛的吗?");
//定义邮件正文
MimeMultipart msgMultipart = new MimeMultipart("mixed");
msg.setContent(msgMultipart);
MimeBodyPart attach1 = new MimeBodyPart();//附件一
MimeBodyPart attach2 = new MimeBodyPart();//附件二
MimeBodyPart content = new MimeBodyPart();//内容
msgMultipart.addBodyPart(attach1);//附件一
msgMultipart.addBodyPart(attach2);//附件二
msgMultipart.addBodyPart(content);//添加内容
//制作第一个附件
DataSource ds1 = new FileDataSource(
"resource\\Java培训.txt"
);
DataHandler dh1 = new DataHandler(ds1);
attach1.setDataHandler(dh1);
//解决附件名中文乱码问题
attach1.setFileName(
//给中文名编码
MimeUtility.encodeText("java培训.txt")
);
//制作第二个附件
DataSource ds2 = new FileDataSource(
"resource\\slogo.gif"
);
DataHandler dh2 = new DataHandler(ds2);
attach2.setDataHandler(dh2);
attach2.setFileName("slogo.gif");//设置文件名称
//正文主要架构
//设置子类型
MimeMultipart bodyMultipart = new MimeMultipart("related");
content.setContent(bodyMultipart);//设置正文体
MimeBodyPart htmlPart = new MimeBodyPart();//正文内容体
MimeBodyPart gifPart = new MimeBodyPart();//正文内容体
bodyMultipart.addBodyPart(htmlPart);
bodyMultipart.addBodyPart(gifPart);
//设置正文图片
DataSource gifds = new FileDataSource(
"resource\\logo.png"
);
DataHandler gifdh = new DataHandler(gifds);
gifPart.setDataHandler(gifdh);
gifPart.setHeader("Content-Location", "http://www.itcast.cn/images/logo.png");
htmlPart.setContent("你们的Java培训真的是最牛的吗?大家都这么说,我想跟你们比试一下!这可是我自己用程序生成和发送的邮件哦!<img src='http://www.itcast.cn/images/logo.png'>",
"text/html;charset=gbk");
msg.saveChanges();
//接下来可以把msg交给transport发送,
//这里把msg写到文件中
OutputStream ops = new FileOutputStream("resource\\demo3.eml");
msg.writeTo(ops);
ops.close();
}
}
参考书籍:《Java邮件开发详解》
参考视频:《传智播客_张孝祥_Java邮件开发教程》