链接:https://blog.csdn.net/qq_41151659/article/details/96475739

代码如下:

import com.sun.mail.util.MailSSLSocketFactory;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties; public class SendImageEmail {
public static void main(String[] args) throws Exception { Properties prop = new Properties();
prop.setProperty("mail.host", "smtp.qq.com"); //// 设置QQ邮件服务器
prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码 // 关于QQ邮箱,还要设置SSL加密,加上以下代码即可
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf); //使用JavaMail发送邮件的5个步骤 //1、创建定义整个应用程序所需的环境信息的 Session 对象
Session session = Session.getDefaultInstance(prop, new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
//发件人邮件用户名、授权码
return new PasswordAuthentication("545646733@qq.com", "授权码");
}
}); //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true); //2、通过session得到transport对象
Transport ts = session.getTransport(); //3、使用邮箱的用户名和授权码连上邮件服务器
ts.connect("smtp.qq.com", "545646733@qq.com", "授权码"); //4、创建邮件 //创建邮件
MimeMessage message = new MimeMessage(session); // 设置邮件的基本信息
//发件人
message.setFrom(new InternetAddress("545646733@qq.com"));
//收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress("545646733@qq.com"));
//邮件标题
message.setSubject("带图片的邮件"); // 准备邮件数据 // 准备图片数据
MimeBodyPart image = new MimeBodyPart();
DataHandler dh = new DataHandler(new FileDataSource("src/resources/bz.jpg"));
image.setDataHandler(dh);
image.setContentID("bz.jpg"); // 准备正文数据
MimeBodyPart text = new MimeBodyPart();
text.setContent("这是一封邮件正文带图片<img src='cid:bz.jpg'>的邮件", "text/html;charset=UTF-8"); // 描述数据关系
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(image);
mm.setSubType("related"); //设置到消息中,保存修改
message.setContent(mm);
message.saveChanges(); //5.发送邮件
ts.sendMessage(message, message.getAllRecipients());
ts.close();
}
}

  

import com.sun.mail.util.MailSSLSocketFactory;
import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import java.util.Properties;
public class SendImageEmail {    public static void main(String[] args) throws Exception {
        Properties prop = new Properties();        prop.setProperty("mail.host", "smtp.qq.com"); //// 设置QQ邮件服务器        prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议        prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码
        // 关于QQ邮箱,还要设置SSL加密,加上以下代码即可        MailSSLSocketFactory sf = new MailSSLSocketFactory();        sf.setTrustAllHosts(true);        prop.put("mail.smtp.ssl.enable", "true");        prop.put("mail.smtp.ssl.socketFactory", sf);
        //使用JavaMail发送邮件的5个步骤
        //1、创建定义整个应用程序所需的环境信息的 Session 对象        Session session = Session.getDefaultInstance(prop, new Authenticator() {            public PasswordAuthentication getPasswordAuthentication() {                //发件人邮件用户名、授权码                return new PasswordAuthentication("545646733@qq.com", "授权码");            }        });

//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态        session.setDebug(true);
        //2、通过session得到transport对象        Transport ts = session.getTransport();
        //3、使用邮箱的用户名和授权码连上邮件服务器        ts.connect("smtp.qq.com", "545646733@qq.com", "授权码");
        //4、创建邮件
        //创建邮件        MimeMessage message = new MimeMessage(session);
        // 设置邮件的基本信息        //发件人        message.setFrom(new InternetAddress("545646733@qq.com"));        //收件人        message.setRecipient(Message.RecipientType.TO, new InternetAddress("545646733@qq.com"));        //邮件标题        message.setSubject("带图片的邮件");
        // 准备邮件数据
        // 准备图片数据        MimeBodyPart image = new MimeBodyPart();        DataHandler dh = new DataHandler(new FileDataSource("src/resources/bz.jpg"));        image.setDataHandler(dh);        image.setContentID("bz.jpg");
        // 准备正文数据        MimeBodyPart text = new MimeBodyPart();        text.setContent("这是一封邮件正文带图片<img src='cid:bz.jpg'>的邮件", "text/html;charset=UTF-8");
        // 描述数据关系        MimeMultipart mm = new MimeMultipart();        mm.addBodyPart(text);        mm.addBodyPart(image);        mm.setSubType("related");
        //设置到消息中,保存修改        message.setContent(mm);        message.saveChanges();
        //5.发送邮件        ts.sendMessage(message, message.getAllRecipients());        ts.close();    }}

(二)JavaMail创建包含内嵌图片的邮件的更多相关文章

  1. 使用MailKit发送带有内嵌图片的邮件且图片不显示成附件

    使用MailKit发送带有内嵌图片的邮件且图片不显示成附件 参考文章:MailKit---发送邮件 注意 在邮件客户端中是否显示内嵌图片为附件依据不同邮件有所不同,暂经测试Outlook和qq不显示为 ...

  2. Spring 发送内嵌图片的邮件 遇到的问题

    问题1:spring 发送带图片的html格式的邮件? 解决方法1:直接在发送内容里面添加 <img src="http://www.rgagnon.com/images/jht.gi ...

  3. java发送内嵌图片邮件

    前言: 博客系统中需要邮件服务的功能,以前写过类似的功能,不过功能太简单了,仅仅是发送文本内容,现在尝试一下发送内嵌图片邮件! 准备工作: 请参考:http://www.cnblogs.com/huj ...

  4. 原生js实现tab选项卡里内嵌图片滚动特效代码

    <!DOCTYPE HTML><html lang="en-US"><head><meta charset="UTF-8&quo ...

  5. 『Asp.Net 组件』Asp.Net 服务器组件 内嵌图片:自己的图片控件

    代码: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ...

  6. android EditText内嵌图片

    如下所示: 主要用到的属性:android:drawableLeft <EditText android:layout_width="match_parent" androi ...

  7. 二、小程序内嵌Html基础格式说明

    1.index.js文件更改 var WxParse = require('../../wxParse/wxParse.js'); Page({ data: { }, onLoad: function ...

  8. JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...

  9. (转载)JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

    博客源地址:http://www.cnblogs.com/xdp-gacl/p/4216311.html 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封 ...

随机推荐

  1. 工业互联网可视化系统风格的抉择:线框模式之 3D 数据中心机房的实现

    前言 3D 可视化,就是把复杂抽象的数据信息,以合适的视觉元素及视角去呈现,方便系统的展示.维护和管理.而在可视化系统的搭建选择上,所呈现的风格样式效果多种多样,各自所突出的适用场合也不尽相同.对于科 ...

  2. js 三级联动 1

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. SpringBoot入门系列(十二)统一日志收集

    前面介绍了Spring Boot 异常处理,不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html. 今 ...

  4. [Unity2d系列教程] 005.Unity如何使用外部触控插件FingerGuesture

    用过Unity的都知道自带的Input.touches并不支持鼠标输入,给我们的调试带来很大的不方便.那么我们会发现其实有很多触控方面的插件,如inputtouches,easy touch,fing ...

  5. MySQL select from join on where group by having order by limit 执行顺序

    书写顺序:select [查询列表] from [表] [连接类型] join [表2] on [连接条件] where [筛选条件] group by [分组列表] having [分组后的筛选条件 ...

  6. Redis详解(十一)------ 过期删除策略和内存淘汰策略

    在介绍这篇文章之前,我们先来看如下几个问题: ①.如何设置Redis键的过期时间? ②.设置完一个键的过期时间后,到了这个时间,这个键还能获取到么?假如获取不到那这个键还占据着内存吗? ③.如何设置R ...

  7. [05]HTML基础之表格标签

    1. <table>标签 表格容器,尽量避免用属性书写样式,而是用CSS来表达 border: 数字 //表格边框宽度 2. <caption>标签 表格的标题,一般出现在表格 ...

  8. Rocket - decode - 解码单个信号

    https://mp.weixin.qq.com/s/0D_NaeBEZX5LBQRdCz2seQ     介绍解码单个信号逻辑的实现.    1. 单个信号   每个指令对应了一组信号,每个信号对应 ...

  9. Java试题错题集01

    1.javac与java命令 两个命令 javac 和 java. javac 后面跟着的是java文件的文件名,例如 HelloWorld.java. 该命令用于将 java 源文件编译为 clas ...

  10. MyBatis(三)动态SQL与缓存

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.动态SQL语句 准备工作: public class User { private int id; ...