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

诗林  金牌会员 | 2024-12-7 23:07:11 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 581|帖子 581|积分 1743

邮件系列

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

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

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

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

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

这种我们当然不可能一个个手动去改,如许就太笨了。
类似的框架网上比较多,CssToInlineStyles-PHPjuice-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企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

诗林

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表