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深层次 ...
随机推荐
- [Web Service] Java Web Services Tutorial
两种主要的java web services api: JAX-WS 和JAX-RS. Java web service application 之间通过WSDL来交互. 有两种方法来书写java w ...
- 调节kafka消费信息的大小
Kafka设计的初衷是迅速处理短小的消息,一般10K大小的消息吞吐性能最好(可参见LinkedIn的kafka性能测试).但有时候,我们需要处理更大的消息,比如XML文档或JSON内容,一个消息差不多 ...
- Mysql8 查询事务隔离级别
Mysql8 查询事务隔离级别 SELECT @@TRANSACTION_ISOLATION REPEATABLE-READ ---默认隔离级别(可重复读)
- 关于vue中this.attr代替this.data.attr访问的原理
请看如下例子: var obj = { name:"zhuwei", age:18 } function Person(data){ this.data = data; } var ...
- java第四次上机
package bbb;public class Person { private String name; private int age; public Person(){ } public Pe ...
- 使用POST请求实现页面的跳转
项目情景: 当用户选择几个item之后,点击 查看 按钮之后, 页面跳转到展示items详情页面. 实现: 如果可以使用get请求, 直接在前端使用windows.loaction.href = &q ...
- ssh跳过knownhost文件
在平时工作中,有时候需要SSH登陆到别的Linux主机上去,但有时候SSH登陆会被禁止,并弹出如下类似提示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...
- Web的Flex弹性盒模型
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Loadrunner11中webservice协议脚本总结
Loadrunner11中webservice协议脚本总结 简介 webservices协议是建立可交互操作的分布式应用程序的新平台,它通过一系列的标准和协议来保证程序之间的动态连接,其中最基 ...
- echarts-五分钟的教程
https://echarts.baidu.com/tutorial.html#5%20%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B%20ECharts