Gmail剥离RTL方向指令:如何让HTML邮件正确显示RTL?
Gmail中RTL邮件显示异常的原因及解决方法
问题原因
- Gmail的HTML过滤机制会主动移除
<html>、<body>标签上的dir="rtl"属性,同时丢弃<style>标签内定义的direction:rtl、text-align:right等RTL相关样式,仅保留有限的内联样式和特定标签属性。 - 非内联的RTL样式(比如外部样式表、内部样式块)几乎都会被Gmail的解析器过滤掉,无法生效。
- 若未使用Gmail兼容的布局标签(如邮件开发常用的
<table>),仅在普通块级标签上设置RTL属性,也可能被解析器处理后失效。
解决方法
- 内联RTL属性和样式到每个内容标签:不要仅在
<html>或<body>上设置dir="rtl",而是直接在每个包含RTL文本的<p>、<div>或<span>上同时添加dir="rtl"属性和内联样式,示例:<p dir="rtl" style="direction: rtl; text-align: right; margin: 0;">这是RTL文本</p> - 使用
<table>布局并在单元格上设置RTL:邮件开发推荐用<table>做布局,在<td>标签上设置RTL属性和样式,Gmail对表格标签的支持更稳定,示例:<table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td dir="rtl" style="direction: rtl; text-align: right; padding: 10px;">这是表格内的RTL文本</td> </tr> </table> - 配合
lang属性增强识别:在RTL文本标签上添加对应语言的lang属性(如阿拉伯语lang="ar"、希伯来语lang="he"),帮助Gmail准确识别文本方向,示例:<p dir="rtl" lang="ar" style="direction: rtl; text-align: right;">مرحبا بالعالم</p> - 彻底放弃非内联样式:所有RTL相关样式必须直接写在元素的
style属性中,不要用外部样式表或<style>块定义,避免被Gmail过滤。
内容的提问来源于stack exchange,提问作者HelloWorld
相关产品推荐
相关产品推荐

