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深层次 ...
随机推荐
- MySQL及navicat for mysql中文乱码
转载自:https://www.cnblogs.com/mufire/p/6697994.html 修改完之后记着重启mysql服务,在服务里边重启,即可生效! 全部使用utf8编码 MySQL中文乱 ...
- CEBX格式的文档如何转换为PDF格式文档、DOCX文档?
方正阿帕比CEBX格式的文档如何转换为PDF格式文档.DOCX文档? 简介: PDF.Doc.Docx格式的文档使用的非常普遍,金山WPS可以直接打开PDF和Doc.Docx文档,使用也很方便. CE ...
- java笔记 -- 输入输出
读取输入: 如果想通过控制台进行输入, 首先需要构造一个Scanner对象.并与'标准输入流'System.in关联. 代码见下文代码块. Sanner (InputStream in) 用给定的输入 ...
- Cordova入门系列(一)创建项目
Cordova是什么? 初学Cordova的人,虽然了解一点点,知道Cordova是用来将html, css, js变成app的,但并不知道到底是怎么用的,原理是什么.经常会有这样的困惑: 它是一个可 ...
- vue admin mock数据
搭建脚手架axios访问不到接口:mock数据的问题mock下的index.js设置了默认指向
- Unity---在Hierarchy视图中将选中的对象的层级目录复制到剪切板
using UnityEditor; using UnityEngine; public class ObjPathCopyTool : ScriptableObject { [MenuItem(&q ...
- time 与 datetime 模块的常用方法
时间格式 一个名词: UTC(Coordinated Universal Time):格林威治天文时,世界标准时间.中国为东八区 UTC+8 在编程的世界中,一定要了解的几种时间格式: 1.时间戳 从 ...
- CRM 员工创建并分配用户
REPORT zjp_emp_upload. TABLES: sscrfields. DATA:gt_excel_data TYPE TABLE OF zalsmex_tabline, gs_exce ...
- 李航《统计学习方法》CH02
CH02 感知机 前言 章节目录 感知机模型 感知机学习策略 数据集的线性可分性 感知机学习策略 感知机学习算法 感知机学习算法 感知机学习算法的原始形式 算法的收敛性 感知机学习算法的对偶形式 导读 ...
- httpd-2.4基本使用及lamp基础(01)
Centos 6 默认安装http版本为2.2,如果想安装2.4版本则需要升级apr centos6默认:apr-1.3.9,apr-util-1.3.9 编译安装步骤: 1.4+版的apr和apr- ...