诗林 发表于 2024-12-7 23:07:11

java 发送邮件 css-style 样式丢失错乱题目,有解决方案

邮件系列

java 如何实现发送邮件 email?
java 搭建属于自己的邮件服务器
java 发送邮件 css-style 样式丢失错乱题目,有解决方案
java 发送邮件-04-java 邮件发送 http 接口如何界说?
开源项目

email: 一行代码实现邮件发送
前言

大家好,我是老马。
大家一样平常开发,对于邮件发送应该能不陌生。本系列就让我们一起学习一下邮件相干的内容。
题目形貌

使用 email 发送邮件时,发现所有的 css 样式丢失。
感觉有些奇怪,看了下邮件设置也是 html 格式。
厥后一想就知道原因了,其实邮箱也是基于 css 体现的,假如邮件内容有全局格式,肯定会导致体现,乃至安全题目。
所以去查了下相干原因,并且记录下自己的解决方案。
题目原因

使用java发送html到qq邮箱后,发现采用“外部样式表”的css都没有
外部样式表:
推测邮箱是从出于安全策略(推测是防止CSRF跨站哀求伪造)才会过滤掉外部引用的,为了绕过这个拦截,改为使用“内部样式表”写法
<head>
   
</head>发送后qq邮箱可以了,但是126邮箱不可,126邮箱比qq邮箱更严格,居然把style标签里的内容全部过滤掉了,这阐明不同的邮箱过滤策略不一样。
那大企业发的邮件,为啥样式都体现正常?
为了一探毕竟就找了领英的邮件看了看,发现它将样式都写在标签了,也就是“内联式”写法。
发送邮件的邮件内容,可以去掉head、body,只留需要的部门,因为,邮箱会过滤head、body,并将这个两个标签的样式全部过滤掉,所以发送html邮件时,直接上内容就好,比如
<h1 >邮件标题</h1>
<p>邮件内容</p>内嵌式格式解决方案

这种我们当然不可能一个个手动去改,如许就太笨了。
类似的框架网上比较多,CssToInlineStyles-PHP 和 juice-JS。
假如你有需求,可以考虑使用符合自己语言的,比如 java。
此处我只是简单使用下,所以采用了网页版本 网页版-juice。
发送转换后的 html,发现体现正常。
开源框架

email 发送

email-java 发送工具
css

CssToInlineStyles
Juice inlines CSS stylesheets into your HTML source.
网页版-juice
参考资料

HTML 邮件兼容题目
在发送邮件HTML中,CSS等题目
发送邮件到qq邮箱、126邮箱后丢失样式

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: java 发送邮件 css-style 样式丢失错乱题目,有解决方案