带有附件及图片正文的JavaMail邮件发送
1 package javamail;
2
3 import java.io.UnsupportedEncodingException;
4 import java.util.Properties;
5
6 import javax.activation.DataHandler;
7 import javax.activation.FileDataSource;
8 import javax.mail.Message;
9 import javax.mail.Message.RecipientType;
10 import javax.mail.Authenticator;
11 import javax.mail.MessagingException;
12 import javax.mail.Multipart;
13 import javax.mail.PasswordAuthentication;
14 import javax.mail.Session;
15 import javax.mail.Transport;
16 import javax.mail.internet.AddressException;
17 import javax.mail.internet.InternetAddress;
18 import javax.mail.internet.MimeBodyPart;
19 import javax.mail.internet.MimeMessage;
20 import javax.mail.internet.MimeMultipart;
21 import javax.mail.internet.MimeUtility;
22
23 public class TestMail03 {
24 public static void main(String[] args) {
25 try {
26 Properties props = new Properties();
27 props.setProperty("mail.transport.protocol", "smtp");
28 /**
29 * 设置发送邮件的服务器,不同的邮箱服务器不一致,可以在邮箱的帮助中查询
30 */
31 props.setProperty("mail.host", "smtp.126.com");
32 /**
33 * 设置发送服务器验证,一些邮箱需要增加这个验证才能发送邮件
34 */
35 props.setProperty("mail.smtp.auth", "true");
36 /**
37 * 当需要使用Transport.send发送时,需要将用户名和密码设置到Session中
38 */
39 Session session = Session.getDefaultInstance(props,new Authenticator() {
40 /**
41 * 通过Authenticator中 的getPasswordAuthentication的方法来设置邮箱的用户名和密码
42 */
43 @Override
44 protected PasswordAuthentication getPasswordAuthentication() {
45 return new PasswordAuthentication("xiaohui390", "soul-390");
46 }
47 });
48
49 session.setDebug(true);
50
51 Message msg = new MimeMessage(session);
52 /**
53 * 使用MimeUtility.encodeText可以将中文编码
54 */
55 msg.setFrom(new InternetAddress(MimeUtility.encodeText("王辉")+"<xiaohui390@126.com>"));
56 msg.setRecipient(RecipientType.TO,new InternetAddress(MimeUtility.encodeText("阿飞")+"<415519522@qq.com>"));
57 msg.setSubject("一封邮件");
58
59 /**
60 * 创建整个邮件的Multipart,因为邮件的内容已经不仅仅只是纯文本或者纯html文本,而需要添加
61 * 相应的附件,此时就得通过Multipart来创建
62 */
63 Multipart emailPart = new MimeMultipart();
64 /**
65 * Multipart不能直接加入内容,需要通过BodyPart来加入内容,假设有两个附件就需要三个BodyPart
66 * 两个用来存储附件,一个用来存储邮件的正文
67 */
68 MimeBodyPart att1 = new MimeBodyPart();
69 /**
70 * 为第一个附件设置文件,DataHandler是在JAF包中,如果使用的是jdk1.4的版本需要手动下载这个包
71 */
72 att1.setDataHandler(new DataHandler(new FileDataSource("d:/1.txt")));
73 att1.setFileName("1.txt");
74 /**
75 * 创建了第二个附件
76 */
77 MimeBodyPart att2 = new MimeBodyPart();
78 att2.setDataHandler(new DataHandler(new FileDataSource("d:/1.txt")));
79 //要解决中文的问题需要通过一个MimeUtility这个类来编码中文
80 att2.setFileName(MimeUtility.encodeText("你好.txt"));
81
82 MimeBodyPart content = new MimeBodyPart();
83 /**
84 * 由于文件的正文还有图片和内容,所以也需要通过Multipart来创建
85 */
86 MimeMultipart contentMultipart = new MimeMultipart();
87 /**
88 * 然后再创建相应的BodyPart来设置内容
89 */
90 MimeBodyPart imgBody = new MimeBodyPart();
91 /**
92 * 创建了正文中的图片内容
93 */
94 imgBody.setDataHandler(new DataHandler(new FileDataSource("d:/02.jpg")));
95 /**
96 * 为这个图片设置一个id,在正文中可以通过cid:xxx来访问
97 */
98 imgBody.setContentID("smile");
99
100 MimeBodyPart htmlBody = new MimeBodyPart();
101 htmlBody.setContent("<h1>这个是一个带有附件的图片</h1><img src='cid:smile'/>", "text/html;charset=utf-8");
102
103
104 contentMultipart.addBodyPart(imgBody);
105 contentMultipart.addBodyPart(htmlBody);
106 //完成了邮件正文的设置
107 content.setContent(contentMultipart);
108
109 /**
110 * 设置邮件的信息
111 */
112 //添加第一个附件
113 emailPart.addBodyPart(att1);
114 //添加第二个附件
115 emailPart.addBodyPart(att2);
116 //添加邮件正文
117 emailPart.addBodyPart(content);
118 //设置邮件的信息
119 msg.setContent(emailPart);
120
121 Transport.send(msg);
122 } catch (AddressException e) {
123 e.printStackTrace();
124 } catch (MessagingException e) {
125 e.printStackTrace();
126 } catch (UnsupportedEncodingException e) {
127 e.printStackTrace();
128 }
129
130 }
131 }
带有附件及图片正文的JavaMail邮件发送的更多相关文章
- javaMail 邮件发送和接收示例,支持正文图片、html、附件(转)
转自:https://blog.csdn.net/star_fly4/article/details/52037587 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文 ...
- Spring的javaMail邮件发送(带附件)
项目中经常用到邮件功能,在这里简单的做一下笔记,方便日后温习. 首先需要在配置文件jdbc.properties添加: #------------ Mail ------------ mail.smt ...
- javaMail邮件发送功能(多收件人,多抄送人,多密送人,多附件)
private Session session; private Transport transport; private String mailHost = ""; privat ...
- JavaMail邮件发送不成功的那些坑人情况及分析说明
[我的Segmentfault原文]https://segmentfault.com/a/1190000008030346 前言 JavaMail的使用本身并不难,网上有不少案例,简单易懂,而且有 ...
- javamail邮件发送例子
public class EmailTask{ // Session used by the javamail classes private Session session; ...
- JavaMail 邮件发送
jar包部署 /** * 通过SMTP进行邮件集成 */ public class CmpSendMail { // 邮件发送服务器主机 private final static String HOS ...
- 应用层之E-mail服务及javaMail邮件发送的知识总结
关于Email服务你需要知道的知识点: 概述: 今天来介绍一下应用层的电子邮件服务,我们每天几乎都在用,电子邮件(email)服务也是一种基于C/S模式的服务,它采用的是一种"存储-转发&q ...
- javaMail邮件发送的简单实现
package com.test.mail; import java.util.Properties; import javax.mail.Message; import javax.mail.Ses ...
- (转)JavaMail邮件发送-发送一个文本邮件和一些问题说明
需要下载的JAR包: JavaMail:http://www.oracle.com/technetwork/java/javamail/index.html JAF:http://www.oracle ...
随机推荐
- Spark—RDD编程常用转换算子代码实例
Spark-RDD编程常用转换算子代码实例 Spark rdd 常用 Transformation 实例: 1.def map[U: ClassTag](f: T => U): RDD[U] ...
- height设置100%不起作用
详细讲解了原因:http://www.webhek.com/post/css-100-percent-height.html
- python基础之操作数据库(pymysql)操作
import pymysqlimport datetime#安装 pip install pymysql"""1.连接本地数据库2.建立游标3.创建表4.插入表数据.查询 ...
- 祝贺|合肥.NET俱乐部第二期技术沙龙活动圆满成功
热烈祝贺合肥.NET俱乐部第二期技术沙龙圆满成功,感恩参与活动的每一位小伙伴!正是因为有你们才促成了这次聚会的成功.现对此次活动进行简单回顾并附上精彩的活动图片,每一位参与活动者名单,以及此次活动讲师 ...
- 【对线面试官】CountDownLatch和CyclicBarrier的区别
<对线面试官>系列目前已经连载31篇啦,这是一个讲人话面试系列 [对线面试官]Java注解 [对线面试官]Java泛型 [对线面试官] Java NIO [对线面试官]Java反射 &am ...
- 解析ArrayList的底层实现(上)
private static final long serialVersionUID = 8683452581122892189L;//唯一序列号ID private static final int ...
- Vulnhub -- DC1靶机渗透
信息收集 开启了 22端口,ssh服务 80,http服务 111,RPC服务 先观察80端口 发现采用的是Drupal的cms 目录爆破: 但是,没有找到可以直接利用的点 登录的页面进行SQL注入即 ...
- 零基础涂鸦智能面板SDK开发记录(一)
前言 本人基础背景:在学校学了点JS,在blbl上看过几节node.js视频,现在是一名Android开发工程师,因公司需要学习涂鸦面板SDK开发.说真的除了官方的一些文档外,我真的找不到其他的资料. ...
- Docker与k8s的恩怨情仇(七)—— “服务发现”大法让你的内外交互原地起飞
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 第一章:Docker与k8s的恩怨情仇(一)-成为PaaS前浪的Cloud Foundry 第二章:Dock ...
- 多次面试被拒,‘宅家苦修’30天,终获美团offer(含字节跳动/阿里/腾讯等大厂面试题整理)
背景:双非渣本. 今年由于疫情,上半年一直在家里.2月份本来无忧无虑,呆在家里不给国家添乱的时候,发现身边的同学找到了大厂的offer.心里开始有点慌张.本来想在3月份如果能回到学校,就开始考研之路, ...