(注: 本文是参考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 }