问题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 发送内嵌图片的邮件 遇到的问题的更多相关文章

  1. java发送内嵌图片邮件

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

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

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

  3. (二)JavaMail创建包含内嵌图片的邮件

    链接:https://blog.csdn.net/qq_41151659/article/details/96475739 代码如下: import com.sun.mail.util.MailSSL ...

  4. C#发送内置图片的html格式邮件的代码

    将写内容过程经常用的内容段备份一次,下面的内容是关于C#发送内置图片的html格式邮件的内容,应该对码农们也有用处.MailMessage m = new MailMessage();m.Subjec ...

  5. Spring Boot 内嵌Tomcat的端口号的修改

    操作非常的简单,不过如果从来没有操作过,也是需要查找一下资料的,所以,在此我简单的记录一下自己的操作步骤以备后用! 1:我的Eclipse版本,不同的开发工具可能有所差异,不过大同小异 2:如何进入对 ...

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

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

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

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

  8. Spring Boot内嵌Tomcat session超时问题

    最近让Spring Boot内嵌Tomcat的session超时问题给坑了一把. 在应用中需要设置session超时时间,然后就习惯的在application.properties配置文件中设置如下, ...

  9. Spring Boot 内嵌容器 Tomcat / Undertow / Jetty 优雅停机实现

    Spring Boot 内嵌容器 Tomcat / Undertow / Jetty 优雅停机实现 Anoyi 精讲JAVA 精讲JAVA 微信号 toooooooozi 功能介绍 讲解java深层次 ...

随机推荐

  1. Fiddler抓取HTTPS请求配置

    由于fiddler安装后默认只能抓取http请求,如果需要抓取https请求需要进行配置.配置方式:Tools--->Options--->HTTPS,勾选CaptureHTTPS CON ...

  2. 支持向量机(Support Vector Machine):超平面

    超平面 超平面是 $n$ 维空间的 $n-1$ 维子空间,类似二维空间的直线,三维空间的平面. 分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开.以二维空间为例 ...

  3. Linux环境——MySQL安装及配置(5.7版本)

    数据库安装包下载地址:https://dev.mysql.com/downloads/mysql/ 我的环境是Linux  Red Hat Enterprlse Linux (64位),本次安装的是M ...

  4. 8_管理及IO重定向

    五大类:运算器.控制器:CPU存储器:RAM输入设备/输出设备 程序:是由指令和数据组成的 控制器:读取指令运算器:存储器: 地址总线:内存寻址数据总线:传输数据控制总线:控制指令 寄存器:CPU暂时 ...

  5. threejs 草场足球运动视角(三)

    这次要模拟的场景如下图:就是在绿草地上足球的运动,并且视角会随着足球的运动发生变化,同时整个草地的视角也会旋转. 接下来,我们就对各个元素进行分析: 1,草地 用PlaneGeometry在三维空间里 ...

  6. js实现word转换为html

    前言 最近接到一个需求,实现上传一个word文档,然后将该word转换成html丢给服务端存上.进行技术调研后发现有三种方法可以实现这个功能:ActiveXObject.docx2html.mammo ...

  7. vue作用域插槽的应用

    问题场景: 存在一个列表,然后当鼠标放入列表中的名称上的时候,自动弹出简介,类似这种效果, 我们当然可以使用positon relative和absolute搭配达到这样的效果,但是现在有一个奇葩的问 ...

  8. OO-第二单元总结

    一.三次作业的设计策略 (1). 第五次作业 第五次作业由于较为简单,在强测及互测中均没有出现BUG,但是并没有做优化.本次的设计有些不合理,所以在后面的作业中也做了重构.本次的作业主要有三个类,主函 ...

  9. linux 复制文件

    1 复制指定目录下的全部文件到另一个目录中. 若dir2目录不存在,则可以直接使用: cp -r dir1 dir2 若dir2目录存在,则需要使用: cp -r dir1/. dir2 若dir2目 ...

  10. [转]pycharm 2016.2注册码

    在网上找了好多都不行,最后还是这个好使.在网上搜索了半天挨个试过来最终找到了License server的方法,由此分享给大家.这个也完全没有使用时间的限制~ 直接打开pycharm,选License ...