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邮件发送的更多相关文章

  1. javaMail 邮件发送和接收示例,支持正文图片、html、附件(转)

    转自:https://blog.csdn.net/star_fly4/article/details/52037587 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文 ...

  2. Spring的javaMail邮件发送(带附件)

    项目中经常用到邮件功能,在这里简单的做一下笔记,方便日后温习. 首先需要在配置文件jdbc.properties添加: #------------ Mail ------------ mail.smt ...

  3. javaMail邮件发送功能(多收件人,多抄送人,多密送人,多附件)

    private Session session; private Transport transport; private String mailHost = ""; privat ...

  4. JavaMail邮件发送不成功的那些坑人情况及分析说明

    [我的Segmentfault原文]https://segmentfault.com/a/1190000008030346 前言   JavaMail的使用本身并不难,网上有不少案例,简单易懂,而且有 ...

  5. javamail邮件发送例子

    public class EmailTask{        // Session used by the javamail classes    private Session session;   ...

  6. JavaMail 邮件发送

    jar包部署 /** * 通过SMTP进行邮件集成 */ public class CmpSendMail { // 邮件发送服务器主机 private final static String HOS ...

  7. 应用层之E-mail服务及javaMail邮件发送的知识总结

    关于Email服务你需要知道的知识点: 概述: 今天来介绍一下应用层的电子邮件服务,我们每天几乎都在用,电子邮件(email)服务也是一种基于C/S模式的服务,它采用的是一种"存储-转发&q ...

  8. javaMail邮件发送的简单实现

    package com.test.mail; import java.util.Properties; import javax.mail.Message; import javax.mail.Ses ...

  9. (转)JavaMail邮件发送-发送一个文本邮件和一些问题说明

    需要下载的JAR包: JavaMail:http://www.oracle.com/technetwork/java/javamail/index.html JAF:http://www.oracle ...

随机推荐

  1. 学习Git的基本业务逻辑

    1,基本业务逻辑(假设针对index.html文件中内容): 1,在init版本库之前已写好开头部分:index 对index进行git init版本库: 进入到文件夹中,git init git a ...

  2. Pytest单元测试框架之setup/teardown模块示例操作

    """模块级(setup_module/teardown_module)开始于模块始末,全局的函数级(setup_function/teardown_function)只 ...

  3. Requests方法 -- session方法

    import requests#禁用安全请求警告from requests.packages.urllib3.exceptions import InsecureRequestWarningreque ...

  4. Adaptive AUTOSAR 学习笔记 8 - 干货小结:背景、技术、特征、架构、方法论和 Manifest

    官方文档下载方式及介绍情参见 Adaptive AUTOSAR 学习笔记 2 - 官方文档下载及阅读建议. 这是 Adaptive AUTOSAR 学习笔记的第 8 篇,学习笔记 3 - 7 翻译了 ...

  5. Halcon——图像增强算子以及分类

    摘要 图像增强就是指通过某种图像处理方法对退化的某些图像特征,如边缘.轮廓.对比度等进行处理,以改善图像的视觉效果,提高图像的清晰度,或是突出图像中的某些"有用",压缩其他&quo ...

  6. Nexus Repository Manager 3 远程命令执行漏洞(CVE-2020-10199、CVE-2020-10204)

    [影响版本] Nexus Repository Manager OSS/Pro 3.x <= 3.21.1 poc地址 https://github.com/magicming200/CVE-2 ...

  7. 用QT写的简单Todo记事本-附源码(浮动窗口)

    去年边学边写了搞了很久, 已经好久没继续开发了, 先放出来供大家参考吧. 发现自己的学习能力还是不错的. 技术点: 使用QT, QML技术 代码参考: https://github.com/cnscu ...

  8. no-strings-attached writeup

    no-strings-attach writeup 1.程序分析 主函数如图所示,关键函数在authenticate中,进入函数. 分析可得,decrypt代码段为关键代码段,进入关键函数decryp ...

  9. DASCTF七月赛两道Web题复现

    Ezfileinclude(目录穿越) 拿到http://183.129.189.60:10012/image.php?t=1596121010&f=Z3F5LmpwZw== t是时间,可以利 ...

  10. C++ //继承同名成员处理方式

    1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 class Base 6 { 7 pu ...