javaMail创建邮件和发送邮件总结

Posted 蔚蓝天空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaMail创建邮件和发送邮件总结相关的知识,希望对你有一定的参考价值。

(注: 本文是参考http://www.cnblogs.com/xdp-gacl/p/4216311.html. 感谢博主的精彩的描述)

一, 前期的准备

  1, 导入 mail.jar

二, 操作步骤:

  1, 创建Properties对象, 并设置相关属性, 其中包括: mail.host,  mail.transport.protocol,  mail.smtp.auth. 

  2, 创建Session对象, 设置发送邮件的网络环境, 即导入Properties对象.

  3, 通过Session对象获取Transport对象, 用于发送邮件. transport对象实现了邮件发送协议,如SMTP

  4, 使用用户名和密码连接邮件服务器

  5, 创建邮件Message 实例(由于邮件内容比较复杂, 此处使用MimeMessage)

    5.1  创建MimeBodyPart 实例(包括: 文本, 图片, 附件), 并设置内容(setContent(), setDataHandler())和 ID或名称.

    5.2  创建关系描述实例MimeMultipart, 添加所加入的元素, 并设置关系类型(related, mixed)

    5.3   将关系描述实例设置为message的内容.

    5.4  保存修改, saveChanges();

  6, 发送邮件: transport.sendMessage();

 

 1 package jason.mail;
 2 
 3 import java.util.Properties;
 4 
 5 import javax.activation.DataHandler;
 6 import javax.activation.FileDataSource;
 7 import javax.mail.Message;
 8 import javax.mail.Session;
 9 import javax.mail.Transport;
10 import javax.mail.internet.InternetAddress;
11 import javax.mail.internet.MimeBodyPart;
12 import javax.mail.internet.MimeMessage;
13 import javax.mail.internet.MimeMultipart;
14 
15 public class SimpleSendMail {
16     public static void main(String[] args) throws Exception{
17         Properties prop = new Properties();
18         prop.setProperty("mail.host", "smtp.163.com");
19         prop.setProperty("mail.transport.protocol", "smtp");
20         prop.setProperty("mail.smtp.auth", "true");
21         
22         // 使用javaMail发送邮件的5个步骤
23         //1. 创建session, 即发送邮件的网络环境
24         Session session = Session.getInstance(prop);
25         
26         //开启session的debug模式,这样就可以查看发送Email的运行状态
27         session.setDebug(true);
28         
29         //2. 得到transport对象: 通过session获得
30         Transport ts = session.getTransport();
31         
32         //3. 使用用户名, 密码连接邮件服务器
33         ts.connect("smtp.163.com", "liujun4719", "jason./1234");
34         
35         //4. 创建邮件
36         Message message = createMail(session);
37         
38         //5. 发送邮件
39         int i = 1;
40         while(i++ <= 6){
41             ts.sendMessage(message, message.getAllRecipients());
42         }
43         ts.close();
44         
45     }
46     
47     
48     public static MimeMessage createMail(Session session) throws Exception{
49         
50         //创建邮件
51         MimeMessage message = new MimeMessage(session);
52         
53         //设置邮件的的基本信息
54         message.setFrom(new InternetAddress("liujun4719@163.com"));
55         message.setRecipient(Message.RecipientType.TO, new InternetAddress("xiangjun.Liu@travelzen.com"));
56         message.setSubject("带附件和图片的邮件");
57         
58         //正文
59         MimeBodyPart text = new MimeBodyPart();
60         text.setContent("hello", "text/html;charset=UTF-8");
61         
62         //图片
63         MimeBodyPart image = new MimeBodyPart();
64         image.setDataHandler(new DataHandler(new FileDataSource("/home/liuxiangjun/doc/mailTest/mailTestPic.png")));
65         image.setContentID("mailTest");
66         
67         //附件
68         MimeBodyPart attach = new MimeBodyPart();
69         DataHandler dh = new DataHandler(new FileDataSource("/home/liuxiangjun/doc/mailTest/aliedit.sh"));
70         attach.setDataHandler(dh);
71         attach.setFileName(dh.getName());
72         
73         //描述关系: 正文与图片
74         MimeMultipart mp1 = new MimeMultipart();
75         mp1.addBodyPart(text);
76         mp1.addBodyPart(image);
77         mp1.setSubType("related");
78         
79         
80         //描述关系: 正文与附件
81         MimeMultipart mp2 = new MimeMultipart();
82         mp2.addBodyPart(attach);
83         
84         //代表正文的bodypart
85         MimeBodyPart content = new MimeBodyPart();
86         content.setContent(mp1);
87         mp2.addBodyPart(content);
88         mp2.setSubType("mixed");
89         
90         message.setContent(mp2);
91         message.saveChanges();
92         
93         return message;
94         
95     }
96 
97 }
View Code

 

以上是关于javaMail创建邮件和发送邮件总结的主要内容,如果未能解决你的问题,请参考以下文章

JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件

JavaMail邮件发送

JavaMail邮件发送

javamail发邮件

JavaMail:利用JavaMail发送复杂邮件

Android Java使用JavaMail API发送和接收邮件的代码示例