VBA生成Outlook邮件如何统一设置字体为Calibri 11号
故障原因
现有代码直接给.HTMLBody传入无样式的纯文本加换行标签,没有显式定义全文的字体、字号规则;同时代码拼接了Outlook新建空白邮件时自动生成的默认.HTMLBody内容,这部分自带Outlook默认配置的Verdana 10号字体样式,会覆盖未指定样式的正文内容,最终出现前后内容格式不统一的问题。
修改方案
给所有正文内容套一层行内样式,显式指定Calibri 11号字体即可。注意Outlook使用Word内核渲染邮件HTML,仅支持标签行内样式,不识别<head>内写的全局CSS规则。
修改后的完整代码如下:
Sub mail_outlook() Dim OutApp As Object Dim OutMail As Object Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) With OutMail .SentOnBehalfOfName = "xxxxxxxxxxxx" .Display .To = "xxxxxxxxxxxxxxxxxx" ' 给全文套上行内样式指定字体字号,覆盖默认样式规则 .HTMLBody = "<div style='font-family: Calibri; font-size: 11pt;'>" & _ "Hello, <br><br>" & _ "Please find in attachment the Report.<br>" & _ "We remain available should you have any questions." & _ "</div>" & .HTMLBody .CC = "xxxxxxxxxxxxxxx" .BCC = "" .Subject = "Report" End With Set OutMail = Nothing Set OutApp = Nothing End Sub
注意事项
- 字号必须带
pt单位,Outlook对无单位的字号值解析存在偏差,会出现字号不符合预期的问题 - 如果不需要自动加载Outlook默认邮件签名,直接删除
.HTMLBody赋值语句末尾拼接的& .HTMLBody即可 - 不要尝试通过
<style>标签写全局CSS控制样式,Outlook的渲染内核对此类写法兼容性极差,大概率不生效
内容的提问来源于stack exchange,提问作者HelpMe
相关产品推荐
相关产品推荐

