在编写测试之前我们需要做一下准备工作,其中需要的工具有:

  1. Javax.mail.* Jar包
  2. OutLook各版本均可,其他邮件工具也可,但呈现效果有差异,此处测试用了OutLook与网易的闪电邮,但结果不同。
  3. 开发工具MyEclipse 9.0M1(此版本为8.6升级版本)
  4. 两张你认为漂亮的图片,作为测试素材

首先,我们建立一个Java项目——创建包——创建一个Java类文件,如下图所示:

 

Lib文件夹中放入开始我们提到的JavaMail的Jar包,并且添加到Java扩展Jar包中至暖瓶状态。

 

在新建的MailTest类中我们先做一个简单的文字邮件,所有的源码都在main方法中写然后执行生成。

源码如下:


View Code

1 import java.io.FileNotFoundException;
  2 
  3  import java.io.FileOutputStream;
  4 
  5  import java.io.IOException;
  6 
  7  import java.util.Properties;
  8 
  9  import javax.mail.Message;
 10 
 11 import javax.mail.MessagingException;
 12 
 13 import javax.mail.Session;
 14 
 15 import javax.mail.internet.AddressException;
 16 
 17 import javax.mail.internet.InternetAddress;
 18 
 19 import javax.mail.internet.MimeBodyPart;
 20 
 21 import javax.mail.internet.MimeMessage;
 22 
 23 import javax.mail.internet.MimeMultipart;
 24 
 25  
 26 
 27 public class MimeMail {
 28 
 29  
 30 
 31 public static void main(String[] args) throws AddressException, MessagingException, FileNotFoundException, IOException {
 32 
 33               //1.创建邮件
 34 
 35               Properties prop = new Properties();
 36 
 37               //2.创建session
 38 
 39               Session session = Session.getInstance(prop);
 40 
 41               //创建邮件主体
 42 
 43               MimeMessage message = new MimeMessage(session);
 44 
 45  
 46 
 47               /*3.设置邮件属性*/
 48 
 49               //设置邮件发送人地址
 50 
 51               message.setFrom(new InternetAddress("L@l.com"));
 52 
 53               //设置邮件收件人地址
 54 
 55        message.setRecipient(Message.RecipientType.TO, new InternetAddress("Pyl@l.com"));
 56 
 57               //设置邮件主题
 58 
 59               message.setSubject("hello!");
 60 
 61  
 62 
 63               //4.正文设置
 64 
 65               MimeBodyPart content = new MimeBodyPart();
 66 
 67               //设置正文内容(第一种方法)
 68 
 69               content.setContent("hello","text/html");
 70 
 71               //设置正文内容(第二种方法)
 72 
 73               content.setText("你好啊!", "utf-8");
 74 
 75               /*注意:这里两种设置正文内容的方法不能同时使用*/
 76 
 77  
 78 
 79               //5.描述关系
 80 
 81               MimeMultipart mm = new MimeMultipart();
 82 
 83               //在关系中加入正文
 84 
 85               mm.addBodyPart(content);
 86 
 87               //在邮件主体设置关系
 88 
 89               message.setContent(mm);
 90 
 91               //保存邮件的更改
 92 
 93               message.saveChanges();
 94 
 95               //在制定路径生成该邮件
 96 
 97               message.writeTo(new FileOutputStream("G:\\1.eml"));
 98 
 99        }
100 
101 }


邮件呈现效果如下:

然后我们来创建第二封带有图片的邮件,源码如下:


javamail如何配置 javamail设置邮件字体_javamail如何配置

javamail如何配置 javamail设置邮件字体_java_02

View Code

1 import java.io.FileNotFoundException;
  2 
  3 import java.io.FileOutputStream;
  4 
  5 import java.io.IOException;
  6 
  7 import java.util.Properties;
  8 
  9 
 10 
 11 import javax.activation.DataHandler;
 12 
 13 import javax.activation.FileDataSource;
 14 
 15 import javax.mail.Message;
 16 
 17 import javax.mail.MessagingException;
 18 
 19 import javax.mail.Session;
 20 
 21 import javax.mail.internet.AddressException;
 22 
 23 import javax.mail.internet.InternetAddress;
 24 
 25 import javax.mail.internet.MimeBodyPart;
 26 
 27 import javax.mail.internet.MimeMessage;
 28 
 29 import javax.mail.internet.MimeMultipart;
 30 
 31 
 32 
 33 public class MailImageTest {
 34 
 35 
 36 
 37        public static void main(String[] args) throws AddressException, MessagingException, FileNotFoundException, IOException {
 38 
 39               //1.创建邮件
 40 
 41               Properties prop = new Properties();
 42 
 43               //2.创建session
 44 
 45               Session session = Session.getInstance(prop);
 46 
 47               //创建邮件主体
 48 
 49               MimeMessage message = new MimeMessage(session);
 50 
 51 
 52 
 53               /*3.设置邮件属性*/
 54 
 55               //设置邮件发送人地址
 56 
 57               message.setFrom(new InternetAddress("L@l.com"));
 58 
 59               //设置邮件收件人地址
 60 
 61               message.setRecipient(Message.RecipientType.TO, new InternetAddress("Pyl@l.com"));
 62 
 63               //设置邮件主题
 64 
 65               message.setSubject("hello!");
 66 
 67 
 68 
 69               //4.正文设置
 70 
 71               MimeBodyPart content = new MimeBodyPart();
 72 
 73               //设置正文内容并且加上引用图片的html标签
 74 
 75               content.setContent("哈哈、这是啥哇!<img src='cid:xx.png'>","text/html;charset=utf-8");
 76 
 77               /*正文中添加图片是由HTML标签来完成的,而其中的"cid:xx.png",是下文设置的标识*/
 78 
 79 
 80 
 81               //5.添加图片
 82 
 83               MimeBodyPart image = new MimeBodyPart();
 84 
 85               //加入放在工程根目录下的图片
 86 
 87               image.setDataHandler(new DataHandler(new FileDataSource("src\\1.png")));
 88 
 89               //是指图片ID标识,以备让正文中的HTML标签引用
 90 
 91               image.setContentID("xx.png");
 92 
 93 
 94 
 95               //6.描述关系
 96 
 97               MimeMultipart mm = new MimeMultipart();
 98 
 99               //在关系中加入正文
100 
101               mm.addBodyPart(content);
102 
103               //在关系中加入图片
104 
105               mm.addBodyPart(image);
106 
107               //将提交关系设置为关系型
108 
109               mm.setSubType("related");
110 
111 
112 
113               //将关系加入邮件主题
114 
115               message.setContent(mm);
116 
117 
118 
119               //保存对邮件的更改
120 
121               message.saveChanges();
122 
123               //在制定路径下生成该邮件
124 
125               message.writeTo(new FileOutputStream("G:\\2.eml"));
126 
127        }
128 
129 }


由于测试使用网易的闪电邮,因该软件问题图片未能正常显示,OutLook在其他机器中测试成功,再次就不再截图。