问题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. Lintcode177-Convert Sorted Array to Binary Search Tree With Minimal Height-Easy

    177. Convert Sorted Array to Binary Search Tree With Minimal Height Given a sorted (increasing order ...

  2. java中==和equals的区别(转)

    java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean   他们之间的比较,应用双等号(== ...

  3. php接口签名验证

    在做一些api接口设计时候会遇到设置权限问题,比如我这个接口只有指定的用户才能访问. 很多时候api接口是属于无状态的,没办法获取session,就不能够用登录的机制去验证,那么 大概的思路是在请求包 ...

  4. Java中封装类型.valueOf()

    @Test public void test() { Integer i3 =128; Integer i4=128; boolean integerGT127=i3==i4; //false Sys ...

  5. Lab 10-3

    This lab includes a driver and an executable. You can run the executable from anywhere, but in order ...

  6. og协议-有利于SNS网站分享

    一丶前言 全球快递toWhere官网发现使用og协议,并且支付宝和淘宝活动源码也会添加og协议,查阅资料弄清og协议是什么,此刻附上og协议官方文档 一丶什么是og协议 Open Graph通讯协定( ...

  7. 菜鸡学C语言之真心话大冒险

    题目描述 Leslie非常喜欢真心话大冒险的游戏.这一次游戏的规则有些不同.每个人都有自己的真心话,一开始每个人也都只知道自己的真心话.每一轮每个人都告诉指定的一个人他所知道的所有真心话,那么Lesl ...

  8. java8实战二------lambda表达式和函数式接口,简单就好

    一.Lambda 可以把Lambda表达式理解为简洁地i表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表.函数主体.返回类型,可能还是一个可以抛出的异常列表. 听上去,跟我们用的匿名类,匿名 ...

  9. dubbo基础学习总结

    Dubbo基本原理机制 分布式服务框架: –高性能和透明化的RPC远程服务调用方案 –SOA服务治理方案 -Apache MINA 框架基于Reactor模型通信框架,基于tcp长连接 Dubbo缺省 ...

  10. 构建web应用之——文件上传

    我们通过使用multipart请求数据接收和处理二进制信息(如文件).DispatcherServlet并没有实现任何解析multipart请求数据的功能,它将该任务委托给了Spring中的multi ...