JavaMail发送邮件api实例
2017-09-07 20:56
453 查看
邮件发送程序
我们先使用JavaMail API发送一封简单的邮件,步骤为创建包含邮件服务器的网络连接信息的Session对象。
创建代表邮件内容的Message对象。
创建Transport对象、连接服务器、发送Message、关闭连接。
这样使用JavaMail API发送一封最简单的邮件(纯文本邮件)的代码为:
public class SendMail { public static void main(String[] args) throws Exception { Properties prop = new Properties(); prop.setProperty("mail.smtp.host", "smtp.163.com"); prop.setProperty("mail.transport.protocol", "smtp"); prop.setProperty("mail.smtp.auth", "true"); Session session = Session.getInstance(prop); // 创建出与指定邮件服务器会话的session /* * 为了看清javamail这套API到底是如何向服务器发邮件的,可以把session的Debug开关打开, * 把这个调试开关打开,javamail这套API会把它与服务器的交互过程打印在命令行窗口 */ session.setDebug(true); Message message = createMessage(session); Transport ts = session.getTransport(); ts.connect("yerenyuan10001", "邮箱登录密码"); // 连接上邮件服务器,其内部会自动帮你进行base64编码 ts.sendMessage(message, message.getAllRecipients()); // 向谁发送一封邮件 ts.close(); // 断开与服务器的连接 } private static Message createMessage(Session session) throws AddressException, MessagingException, UnsupportedEncodingException { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("yerenyuan10001@163.com")); message.setRecipient(Message.RecipientType.TO, new InternetAddress("i_beautifulman@sina.com")); message.setSubject("love"); message.setContent("hello hello liayun", "text/html"); message.saveChanges(); return message; } }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
28
29
30
31
32
33
34
35
提示:创建出包含邮件服务器的网络连接信息的Session对象之后,为了看清JavaMail这套API到底是如何向邮件服务器发送邮件的,可以把session的Debug开关打开,把这个调试开关打开后,JavaMail这套API会把它与邮件服务器的交互过程打印在Eclipse的控制台上。
运行以上程序,然后登陆到i_beautifulman@sina.com邮箱当中,就可以收取到由yerenyuan10001@163.com发送的Email了,如下图所示:
接着我们使用JavaMail API发送一封复杂邮件,如下:
public class SendMail { public static void main(String[] args 4000 ) throws Exception { Properties prop = new Properties(); prop.setProperty("mail.smtp.host", "smtp.163.com"); prop.setProperty("mail.transport.protocol", "smtp"); prop.setProperty("mail.smtp.auth", "true"); Session session = Session.getInstance(prop); // 创建出与指定邮件服务器会话的session /* * 为了看清javamail这套API到底是如何向服务器发邮件的,可以把session的Debug开关打开, * 把这个调试开关打开,javamail这套API会把它与服务器的交互过程打印在命令行窗口 */ session.setDebug(true); Message message = createMessage(session); Transport ts = session.getTransport(); ts.connect("yerenyuan10001", "邮箱登录密码"); // 连接上邮件服务器,其内部会自动帮你进行base64编码 ts.sendMessage(message, message.getAllRecipients()); // 向谁发送一封邮件 ts.close(); // 断开与服务器的连接 } private static Message createMessage(Session session) throws AddressException, MessagingException, UnsupportedEncodingException { // 创建邮件 MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("yerenyuan10001@163.com")); message.setRecipient(Message.RecipientType.TO, new InternetAddress("i_beautifulman@sina.com")); message.setSubject("我爱你,那个人"); // 创建bodypart封装正文 MimeBodyPart text = new MimeBodyPart(); text.setContent("我是真的爱你,你知道吗?<img src='cid:1.jpg'>", "text/html;charset=UTF-8"); // 创建bodypart封装图片 MimeBodyPart image = new MimeBodyPart(); image.setDataHandler(new DataHandler(new FileDataSource("src/1.jpg"))); image.setContentID("1.jpg"); // 创建bodypart封装附件 MimeBodyPart attach = new MimeBodyPart(); DataHandler dh = new DataHandler(new FileDataSource("src/爱的秘密蓝调口琴曲.mp3")); attach.setDataHandler(dh); // System.out.println(dh.getName()); // 数据处理器获取附件名时没有中文乱码问题,显示正常 // 只要调用了setFileName方法,它就会自动帮你生成Content-Disposition这个头字段 attach.setFileName(MimeUtility.encodeText(dh.getName())); // 设置附件名的时候出现中文乱码问题了,该怎么解决呢? // 描述数据关系 MimeMultipart content = new MimeMultipart(); content.addBodyPart(text); content.addBodyPart(image); content.setSubType("related"); MimeBodyPart mbp = new MimeBodyPart(); mbp.setContent(content); MimeMultipart mm = new MimeMultipart(); mm.addBodyPart(mbp); mm.addBodyPart(attach); mm.setSubType("mixed"); message.setContent(mm); message.saveChanges(); return message; } }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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
运行以上程序,然后登陆到i_beautifulman@sina.com邮箱当中,就可以收取到由yerenyuan10001@163.com发送的Email了,
相关文章推荐
- JSP/JavaMail实例:邮件发送
- JavaMail发送邮件实例
- javamail发送邮件的简单实例
- 利用javamail发送邮件实例
- javamail发送邮件的简单实例
- javamail发送邮件实例
- JAVAMAIL发送带附件的邮件实例
- javamail模拟邮箱功能发送电子邮件-基础实战篇(javamail API电子邮件实例)
- JSP/JavaMail实例:邮件发送
- 最简单的JAVAMail发送邮件实例
- javamail发送邮件的简单实例
- javamail发送邮件实例讲解
- javamail发送邮件的简单实例
- javamail的smtp方式发送邮件实例
- javaMail发送邮件实例
- JavaMail发送邮件实例
- Javamail简单的发送邮件附件实例
- JavaMail API发送和接收邮件
- JavaMail发送邮件(实例)
- javamail发送邮件的简单实例