Excel VBA发送邮件时字体大小与代码指定不符问题排查
问题原因及解决办法
你的代码里用<font>标签指定字体大小时写法错误。HTML的<font>标签的size属性不支持带pt的单位,它只能接受1到7的数字(1最小,7最大)。你写size="11pt"这种格式,Outlook会识别为无效值,直接 fallback 到默认的超大字号(也就是你看到的36pt)。
要正确设置字号,得改用CSS的font-size属性,把样式写在style属性里,而非<font>的size属性。修改后的代码如下:
Sub SendEmail(Body as String, EmailTo as String, EmailCC as String, EmailSubject as String, Message as String, Title as String) Dim EmailApp As Outlook.Application Set EmailApp = New Outlook.Application Dim Email As Outlook.MailItem ' 用style属性指定完整字体样式,包括正确的字号单位 Body = "<span style=""font-family:Calibri; font-size:11pt; color:#000000"">" & Message & "</span>" Signature = "<span style=""font-family:Arial; font-size:11pt; color:#808080"">Kind regards<br><br></span>" & _ "<span style=""font-family:Arial; font-size:10pt; color:#808080"">" & Title & "</span>" Set Email = EmailApp.CreateItem(olMailItem) Email.To = EmailTo Email.CC = EmailCC Email.Subject = EmailSubject Email.HTMLBody = Body & "<br><br>" & Signature ' HTML中用<br>实现换行,vbNewLine无效 Email.Send End Sub
额外补充两点:
- 原代码里的
vbNewLine在HTML邮件中不会生效,必须换成<br>标签来实现换行 <font>标签属于已废弃的HTML标签,用<span>配合style属性更符合现代规范
内容的提问来源于stack exchange,提问作者Jens
相关产品推荐
相关产品推荐

