博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用JavaMail完成邮件的编写
阅读量:5898 次
发布时间:2019-06-19

本文共 4306 字,大约阅读时间需要 14 分钟。

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

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

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

 Mail工程

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

 Jar包的暖瓶状态

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

源码如下:

ContractedBlock.gifExpandedBlockStart.gifView 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 }

邮件呈现效果如下:

呈现效果

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

ContractedBlock.gifExpandedBlockStart.gifView 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在其他机器中测试成功,再次就不再截图。

明天我会将邮件中添加多媒体文件与混合附件的方法与大家共同分享,敬请期待 

转载于:https://www.cnblogs.com/H_Razor/archive/2011/03/02/1969254.html

你可能感兴趣的文章
Java集合中的AbstractMap抽象类
查看>>
图像滤镜艺术---(Lightleaks Filter)漏光滤镜
查看>>
[LeetCode] Find Anagram Mappings 寻找异构映射
查看>>
--Too small initial heap for new size specified
查看>>
黄聪:3分钟学会sessionStorage用法
查看>>
Entity Framework 全面教程详解(转)
查看>>
Windows上Python2.7安装Scrapy过程
查看>>
Chapter 3:Code Style in Django
查看>>
FIDO联盟拥抱政府监管,全面打造安全可信网络
查看>>
BlackNurse新型DoS攻击 15M流量就可以打瘫思科防火墙 思科做出了回应
查看>>
Interop 2015:思科为其SDN架构做好安全防护
查看>>
Windows 10中国普及速度慢 原因是盗版难
查看>>
第19届亚太反病毒研究者联盟(AVAR)国际大会开幕在即
查看>>
解决 WordPress 升级更新后“添加媒体”按钮失效问题
查看>>
挖掘数据金矿 领军协同创新 曙光荣膺“2016大数据创新应用领袖企业”称号
查看>>
光伏企业去年业绩频报喜 今年难复制?
查看>>
国内WiFi厂商公关客户常说的三句话!
查看>>
《大数据分析原理与实践》一一 3.2 关联规则分析
查看>>
Fast通道获得Win10 Mobile Build 14977更新
查看>>
GAN专题阅读小组 | 每周一起读 #05
查看>>