发送Outlook自动化邮件时字体大小异常变动问题求助
问题原因
- 行内样式缺少单位:你代码里的
font-size:13没有指定单位,Outlook采用Word内核渲染HTML邮件,对无单位的字体大小解析规则和普通浏览器不同,会优先匹配Outlook客户端默认的字体大小设置(多数默认配置为11号字),导致你设置的大小失效。 - 样式覆盖范围不完整:仅对开头的
<p>标签设置样式,后续换行的文本、signature变量对应的签名内容如果游离在样式标签外,或者<p>标签未正常闭合,Outlook自动补全HTML结构时会给这部分内容套用默认样式。 - 缺少全局样式约束:没有定义HTML全局样式,Outlook自动修正不规范HTML结构时会插入自带的默认样式规则,覆盖你写的局部行内样式。
修复方案
- 给所有字体大小属性补全
pt单位,Outlook对pt(印刷点)的兼容性远高于px等单位,比如你要设置10号字就写font-size:10pt。 - 把所有邮件内容包裹在带统一样式的全局容器内,避免出现无样式的游离文本。
- 可选:在HTML头部添加全局样式规则,锁定所有常见文本标签的字体格式,避免Outlook默认样式覆盖。
修正后的代码示例
With OutlookMailitem .To = toEmail .CC = ccEmail & ";" & ccEmail2 & ";" & ccEmail3 .Subject = "Submit your Timesheet" ' 增加完整HTML结构、全局样式、补全单位 .HTMLbody = "<html><head><style>* {font-family: arial; font-size: 10pt; margin: 0; padding: 0;}</style></head><body>" & _ "<p>Hey " & toName & ",</p><br><br>" & _ "<p>We noticed your timesheet is still open. Please submit your timesheet each Monday before 12PM. If you face any issues, do let us know.</p><br><br>" & _ "<p>Best,</p>" & signature & "</body></html>" .Send End With
内容的提问来源于stack exchange,提问作者db2020
相关产品推荐
相关产品推荐

