学习笔记之java mail

本文用于记录学习心得和笔记。

邮件协议

SMTP:简单邮件传输协议,发邮件协议。服务器名称为smtp.xxx.xxx,端口号为25.
POP3:邮局协议第三版,收邮件协议。服务器名称pop3.xxx.xxx,端口号为110。
IMAP:因特网消息收发协议。

使用java mail发送邮件

需要的jar包:activation.jar,javax.mail.jar。
步骤:1. 创建邮件会话类Session 的实例,使用static Session getInstance(Properties props, Authenticator authenticator)方法,第一个参数类型为Properties,其中包含java mail规范的一些属性。例如:mail.host,mail.transport.protocol等。第二个参数是身份验证对象。2. 创建Mimemessage对象,通过调用其方法可以设置发件人,设置收件人,设置主题,设置内容。3. 发送,Transport.send(Message msg);
发送带有附件的邮件。这需要使用MimeMultipartMimeBodypart类。前者用来创建一个包含多部分的邮件体,后者表示邮件的主体部分。即在一个MimeMultipart对象中能添加多个MimeBodyPart。
完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Properties prop = new Properties();
prop.setProperty("mail.host", "smtp.qq.com");//设置服务器主机
prop.setProperty("mail.smtp.auth", "true");//设置需要验证
prop.setProperty("mail.smtp.ssl.enable", "true");//使用ssl连接
Authenticator anth = new Authenticator() {
//设置用户名、密码
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("wangyq97", "jrkeotaieoygeacj");
}
};
Session session = Session.getInstance(prop, anth);//创建邮件会话
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("[email protected]"));//发件人
message.setRecipients(RecipientType.TO, "[email protected]");//收件人
message.setSubject("标题");
// message.setContent("这是一封测试邮件", "text/html;charset=utf-8");
MimeMultipart list = new MimeMultipart();//创建包含多部分的邮件体
MimeBodyPart part1 = new MimeBodyPart();//主体部分
part1.setContent("文本部分", "text/html;charset=utf-8");//文本主体部分
list.addBodyPart(part1);
MimeBodyPart part2 = new MimeBodyPart();//主体部分
part2.attachFile(new File("F:/music/高梨康治 - 出陣.flac"));
part2.setFileName(MimeUtility.encodeText("出陣.flac"));//处理乱码问题
list.addBodyPart(part2);
message.setContent(list);
Transport.send(message);