Spring 发送内嵌图片的邮件 遇到的问题
问题1:spring 发送带图片的html格式的邮件?
解决方法1:直接在发送内容里面添加
<img src="http://www.rgagnon.com/images/jht.gif">
这种方法是最简单的发送带图片的邮件的方法,但是存在一个问题:有的邮箱会把邮件中有带服务器地址的图片放到垃圾箱,导致邮件收不到,于是继续整。
解决方法2:使用Spring带的 MimeMessageHelper,说不清楚直接看代码:
public class MyClass {
public static void sendHtmlImgEmail(String subject, String sendHtml, String toUser, String ccUser, String bccUser,
File[] attachment) {
try {
//【1】
sendHtml = sendHtml + "<html><body><hr/><img src=\"cid:imprtant\"/></body></html>";
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
// 设定mail server【2】
int port = 25;
senderImpl.setHost("邮箱host");
senderImpl.setPort(port);
// 建立邮件消息,发送简单邮件和html邮件的区别
MimeMessage mailMessage = senderImpl.createMimeMessage();
// 注意这里的boolean,等于真的时候才能嵌套图片,在构建MimeMessageHelper时候,所给定的值是true表示启用multipart模式
// 最后一个参数“utf-8”避免邮件中文乱码 问题【3】
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8");
// 设置多个抄送地址
if (null != ccUser && !ccUser.isEmpty()) {
@SuppressWarnings("static-access")
InternetAddress[] internetAddressCC = new InternetAddress().parse(ccUser);
messageHelper.setCc(internetAddressCC);
}
// 设置多个密送地址
if (null != bccUser && !bccUser.isEmpty()) {
@SuppressWarnings("static-access")
InternetAddress[] internetAddressBCC = new InternetAddress().parse(bccUser);
messageHelper.setBcc(internetAddressBCC);
}
// 添加附件的内容
if (null != attachment && attachment.length != 0) {
for (File file : attachment) {
DataSource source = new FileDataSource(file);
messageHelper.addAttachment(file.getName(), source);
}
}
if (null != toUser && !toUser.isEmpty()) {
//这里的分隔符可以自定义 发送给多人【4】
String[] toUsers = toUser.split(",");
messageHelper.setTo(toUsers);
}
// 设置收件人,寄件人
messageHelper.setFrom("发件人名称");
messageHelper.setSubject(subject);
// true 表示启动HTML格式的邮件
messageHelper.setText(sendHtml, true);
//这个 直接在main方法中可以 但是部署后就不行了 报错 找不到路径【5】
//String imagePath="src/main/resources/config/emailTag.png";
//这个获取项目的完整路径【6】
String abPath = new MyClass().getClass().getClassLoader().getResource("/").getPath();
String imagePath=abPath+"config/emailTag.png";
FileSystemResource img = new FileSystemResource(imagePath);
//这个是图片的标识 对应上面image标签中的cid【7】
messageHelper.addInline("imprtant", img);
senderImpl.setUsername("邮箱用户名");
senderImpl.setPassword("你的邮箱密码");
Properties prop = new Properties();
//这个使用outlook 发邮件时候 必须添加 否则报错那个 ,,,忘了【8】
prop.put("mail.smtp.starttls.enable", "true");
senderImpl.setJavaMailProperties(prop);
// 发送邮件
senderImpl.send(mailMessage);
System.out.println("邮件发送成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
解释:
【1】:注意 cid 这个参数 指图片的标识,看【7】,必须相同
【2】:设置邮件服务器地址跟端口号 注意outlook端口号是 587
【3】:发送中文乱码,添加编码格式 utf-8
【4】:邮件发送给多人
【5】:这个在部署后 找不到路径 有知道的大侠 求赐教
【6】:这个我看了下项目部署在载服务器上的路径,然后想到这个方法获取到绝对路径在加上自己图片在的路径 成功(这个 折腾了好久,一直找不到路径)
【7】:对应【1】
【8】:这个 使用微软邮箱的时候 报错 ,com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM
添加这个属性后就可以
总结:
这个发送邮件方法,可以带附件,发送多个人,添加内嵌图片,Html内容,添加附件未测试,其他都测试通过,但是如果不设置【1】【7】,图片会自动变成附件发送。
Spring 发送内嵌图片的邮件 遇到的问题的更多相关文章
- java发送内嵌图片邮件
前言: 博客系统中需要邮件服务的功能,以前写过类似的功能,不过功能太简单了,仅仅是发送文本内容,现在尝试一下发送内嵌图片邮件! 准备工作: 请参考:http://www.cnblogs.com/huj ...
- 使用MailKit发送带有内嵌图片的邮件且图片不显示成附件
使用MailKit发送带有内嵌图片的邮件且图片不显示成附件 参考文章:MailKit---发送邮件 注意 在邮件客户端中是否显示内嵌图片为附件依据不同邮件有所不同,暂经测试Outlook和qq不显示为 ...
- (二)JavaMail创建包含内嵌图片的邮件
链接:https://blog.csdn.net/qq_41151659/article/details/96475739 代码如下: import com.sun.mail.util.MailSSL ...
- C#发送内置图片的html格式邮件的代码
将写内容过程经常用的内容段备份一次,下面的内容是关于C#发送内置图片的html格式邮件的内容,应该对码农们也有用处.MailMessage m = new MailMessage();m.Subjec ...
- Spring Boot 内嵌Tomcat的端口号的修改
操作非常的简单,不过如果从来没有操作过,也是需要查找一下资料的,所以,在此我简单的记录一下自己的操作步骤以备后用! 1:我的Eclipse版本,不同的开发工具可能有所差异,不过大同小异 2:如何进入对 ...
- 原生js实现tab选项卡里内嵌图片滚动特效代码
<!DOCTYPE HTML><html lang="en-US"><head><meta charset="UTF-8&quo ...
- 『Asp.Net 组件』Asp.Net 服务器组件 内嵌图片:自己的图片控件
代码: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ...
- Spring Boot内嵌Tomcat session超时问题
最近让Spring Boot内嵌Tomcat的session超时问题给坑了一把. 在应用中需要设置session超时时间,然后就习惯的在application.properties配置文件中设置如下, ...
- Spring Boot 内嵌容器 Tomcat / Undertow / Jetty 优雅停机实现
Spring Boot 内嵌容器 Tomcat / Undertow / Jetty 优雅停机实现 Anoyi 精讲JAVA 精讲JAVA 微信号 toooooooozi 功能介绍 讲解java深层次 ...
随机推荐
- yaf框架在windows上的环境配置和安装
1.首先检测你的php版本 如图:Architecture:×86和thread Safety:disabled 这个有什么用呢? 2.进入这个网站 tgz是linux下的扩展包,windows下点D ...
- Web API系列(三) 异常处理
在上一篇教程中我为大家介绍了Web API中Filter的开发使用,其中讲到ExceptionFilter时留了一个坑:ExceptionFilter只能截获并处理Action执行过程中发生的异常,在 ...
- Python简单实现决策树
__author__ = '糖衣豆豆' #决策树 import pandas as pda fname="~/coding/python/data/lesson.csv" data ...
- P3953 逛公园
传送门 花了一个下午才 A 的毒瘤题 思路: 这题需要建两个图,一个正向图,一个反向图. 先在正向图上跑一遍 dijkstar ,计算出每个点到 点1 的最短路径 . 然后在反向图上开始记忆化搜索: ...
- HDU 1024 Max Sum Plus Plus(DP的简单优化)
Problem Description Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To b ...
- object的wait()、notify()、notifyAll()、方法和Condition的await()、signal()方法
wait().notify()和notifyAll()是 Object类 中的方法 从这三个方法的文字描述可以知道以下几点信息: 1)wait().notify()和notifyAll()方法是本地方 ...
- 【Mac】Mac中如何将相同后缀的所有文件设置指定软件打开
操作步骤: 以settings.xml文件为例 1.首先选中该文件,鼠标右键打开功能列表,选则查看文件信息 2.在文件信息中,进行相关设置
- java,sort的数组降序
1.Array.sort(数组,起始位置,结束位置).这个是升序排序. 2.关于数组的降序实现如下: 利用Collections.reverseOrder()方法: import java.util. ...
- vue-文字块收缩与展开功能
在设计图中要求的效果为: 文字限制超过9行即隐藏,并显示“展开”按钮,点击按钮进行切换,控制文本全部展示和部分展示 在原本的实现过程中,使用了红框内的判断方式: 页面代码: 样式则规定嵌套元素给一个死 ...
- js生成二维码 qrcode
js生成二维码 QRcode npm 地址 1.安装qrcode //在项目文件夹中执行: npm install --save qrcode //或者,将其全局安装以使用qrcode命令行来保存qr ...