Java发送内嵌图片的邮件
使用Java发送邮件时,既需要发送html文档又需要在邮件中内嵌图片(非附件形式),这里封装了一个类使用JavaMail组织的邮件发送,支持多张图片发送,并指定图片位置。注意img标签src要如下写<img src=\"cid:abcd\">"其中abcd对应mageMailDto#imageCid,可以自行定义,不要出现重复。
发送方法,注意替换几个邮件参数,如host、user、password
/*** 发送内嵌图片的邮件** @param fromEmailAddress 发件人邮箱地址* @param fromEmailName 发件人邮箱显示名称* @param subject 主题* @param content 邮件正文* @param toEmailAddressList 收件人邮箱集合(支持群发)* @return true:成功;false:失败*/@Overridepublic boolean sendImageHtmlEmail(String fromEmailAddress, String fromEmailName, String subject, String content, List<String> toEmailAddressList, ImageMailDto[] imageData) throws RuntimeException {if (CollectionUtils.isEmpty(toEmailAddressList)) {throw new RuntimeException("toEmailAddressList is empty!");}if (toEmailAddressList.size() > MAX_SEND_SIZE) {throw new RuntimeException("toEmailAddressList is more than [" + MAX_SEND_SIZE + "]!");}try {Properties props = new Properties();props.put("mail.smtp.host", hostName);props.put("mail.smtp.auth", "true");Session sendMailSession = Session.getDefaultInstance(props, authenticator);MimeMessage mimeMessage = new MimeMessage(sendMailSession);mimeMessage.setFrom(new InternetAddress(fromEmailAddress));InternetAddress[] address = new InternetAddress().parse(toEmailAddressList.toString());mimeMessage.setRecipients(Message.RecipientType.TO, address);mimeMessage.setSubject(subject);mimeMessage.setSentDate(new Date());BodyPart mdp = new MimeBodyPart();//新建一个存放信件内容的BodyPart对象mdp.setContent(content, "text/html;charset=utf-8");//给BodyPart对象设置内容和格式/编码方式Multipart mm = new MimeMultipart();//新建一个MimeMultipart对象用来存放BodyPart对mm.addBodyPart(mdp);//将BodyPart加入到MimeMultipart对象中(可以加入多个BodyPart)if (imageData != null) {for (ImageMailDto dto : imageData) {MimeBodyPart image = new MimeBodyPart();image.setDataHandler(new DataHandler(new ByteArrayDataSource(dto.getImageData(), dto.getMimeType()))); //javamail jafimage.setContentID(dto.getImageCid());mm.addBodyPart(image);}}mimeMessage.setContent(mm);//把mm作为消息对象的内容mimeMessage.saveChanges();Transport.send(mimeMessage);return true;} catch (Exception e) {log.error("邮件发送异常邮件地址" + toEmailAddressList, e);throw new RuntimeException(e);}}
鉴权类写法:
Authenticator authenticator = new DefaultAuthenticator(props.getProperty("mail.smtp.user"),props.getProperty("mail.smtp.password"));
图片存储类(自定义,可以修改替换):
import java.io.Serializable;/*** 邮件发送图片** @author wangqing* @since 16-3-2 下午4:39*/
public class ImageMailDto implements Serializable {private static final long serialVersionUID = 1L;private byte[] imageData;private String imageCid;//"好好工作<img src=\"cid:abcd\">"private String mimeType;//like image/jpeg、image/bmp、image/gifpublic byte[] getImageData() {return imageData;}public void setImageData(byte[] imageData) {this.imageData = imageData;}public String getImageCid() {return imageCid;}public void setImageCid(String imageCid) {this.imageCid = imageCid;}public String getMimeType() {return mimeType;}public void setMimeType(String mimeType) {this.mimeType = mimeType;}}
Java发送内嵌图片的邮件相关推荐
- java发送内嵌图片邮件
前言: 博客系统中需要邮件服务的功能,以前写过类似的功能,不过功能太简单了,仅仅是发送文本内容,现在尝试一下发送内嵌图片邮件! 准备工作: 请参考:http://www.cnblogs.com/huj ...
- java smtp 内嵌图片,SMTP 发送内嵌图片 邮件
本文实验用QQ邮箱发不了,网易163能发文字不能发img标签的内容 在新浪邮箱实验成功: public bool sendEmailto(List shoujianren,string biaot ...
- JavaMail(四)——发送HTML格式、内嵌图片、带附件的邮件
代码如下: package com.company;import javax.activation.DataHandler; import javax.activation.FileDataSourc ...
- WPS内嵌图片怎样使用Java获取图片?
wps表格中,将图片如图设置为内嵌图片格式时,Java后端的POI无法读取图片,有其他的解决办法吗?(图片设置为浮动图片时可正常读取)
- SpringBoot Zxing _ Java 生成二维码(可内嵌图片)
前提 jdk 要求:1.8:会 SpringBoot.Maven: 以下代码可以直接复制粘贴到项目中,可以直接使用~ 一.pom 准备 <?xml version="1.0" ...
- java 枚举内嵌枚举_高度有用的Java ChronoUnit枚举
java 枚举内嵌枚举 几年前,我发表了博客文章" The Highly有用的Java TimeUnit Enum ",其中介绍了JDK 5引入的TimeUnit枚举. JDK 8 ...
- java 枚举内嵌枚举_Java枚举益智游戏
java 枚举内嵌枚举 假设我们有以下代码: enum Case {CASE_ONE,CASE_TWO,CASE_THREE;private static final int counter;priv ...
- Markdown内嵌图片的解决方法
Markdown内嵌图片的解决方法 文章目录 Markdown内嵌图片的解决方法 问题与解决方案 一.实现功能 二.脚本制作 1.利用文件选择框选择文件或者从剪贴板读取图像 2.将图片转为Base64 ...
- 二维码 内嵌图片,下载二维码
功能 二维码可内嵌图片 可下载二维码 功能集合成Vue组件 使用技术 Vue.qrcodejs2.html2canvas 直接上代码 <template><div class=&qu ...
最新文章
- Python 类对象及属性内置方法 classmethod、delattr、dir、hasattr、getattr、callable
- 再也不买仙剑正版盘了
- Linux疑难杂症解决方案100篇(五)-SHELL脚本中case语句的多种使用场景
- LeetCode算法入门- Longest Valid Parentheses -day12
- 计算机网络链接的主要目标 主要功能,计算机网络课程教案.doc
- Python基础——NaN(Not a Number)
- java 规则引擎roolie_【智能决策引擎】规则引擎介绍
- memcached(十)动态扩容
- tps5430应用电路详解_详解常用电阻的优缺点
- 初入行的C++程序员,如何快速摆脱CRUD阶段?
- [Android实例] 【eoeAndroid社区索引】图形图像之动画
- 基于python的数字印刷体识别_不告诉你我用了它配合Python简简单单开发OCR识别,带你识别手写体、印刷体、身份证等N种,附代码!...
- 计算机毕业设计ssm高校物资捐赠管理系统0e45o系统+程序+源码+lw+远程部署
- CIS坐标系统与投影变换
- 2.3用卡诺图化简逻辑函数210807
- python求奇偶数和_python奇偶数求和
- Python电影观众数量回归分析 随机森林 可视化 实验报告
- 小米10青春版科学计算机,中端新势力 小米10青春版对华为nova 7 SE
- 2W字长文吐血整理 Docker云原生
- 知识图谱之NELL数据集简介
热门文章
- linux图像查看软件下载,Linux 如何用 CLI 图像查看器来在终端上查看图像?
- OSChina 周一乱弹 —— 红薯表情包 V1.0 精彩大放送
- 初中毕业学计算机需要学那部分,初中毕业学计算机需要关注哪些点?
- mate20pro更换鸿蒙系统,华为mate20pro更换成mate40如何?
- BigDecimal的加减乘除,以及四舍五入和比较大小
- 调查微软恶意升级 Windows 10 请愿即将达成
- 爱一个要多久!忘一个人要多久!
- 后端使用JsonResult类返回数据
- 02-SpringBoot核心功能之配置文件
- Unity中画2D图表(2)——用XChart包绘制散点分布图 + 一条直线方程