繁体   English   中英

Outlook / Word自动格式化VBA生成的电子邮件

[英]Outlook/Word Autoformats VBA Generated Email

我正在尝试使用Excel宏生成然后预览电子邮件。 本质上,我正在使用CreateItem(0)创建一个新的MailItem ,设置HTMLBody属性,然后调用myemail.Display myemail.Display在Outlook的检查myemail.Display打开电子邮件,该检查器AFAIK首先通过某种Microsoft Word解析器运行电子邮件,该解析器剥离了许多格式。 如果不是调用myemail.Display而是调用myemail.Send ,则电子邮件的格式正确,但是在这种情况下,我们确实希望能够首先预览电子邮件。

正在剥离的特定格式是所有左对齐的文本都居中。 这没什么大不了的,但是如果我能理解这种行为,那就太好了。 一些潜在的解决方案/答案可能包括:1.如何设置HTML格式,以使Word不剥离格式2.如何完全关闭Word解析器引擎3.如何关闭Word自动居中文本

我尝试过的最有希望的事情是制作一个左对齐的表格,但是Outlook / Word在表格之后增加了一个难看的两行。 许多解决方案看起来大多不错,但是格式化/预览的整个要点是因为电子邮件已发送给重要人员,所以我希望它看起来尽可能好。

这是一个示例,其中Outlook / Word将自动将此文本居中

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

With OutMail
   .To = "someemail@email.com"
   .BCC = ""
   .Subject = "a subjhect"
   .SentOnBehalfOfName = "anotheremail@email.com"
   .HTMLBody = "here is some text that will be auto centered"
   .Display
End With

您的.HTMLBody当前实际上不包含任何HTML。 各种渲染引擎对HTML电子邮件的解析方式有所不同,因此可以全面使用的HTML实际子集可能是反复试验的结果。

但是对于像一个简单的左对齐这样的事情,就不应该太复杂。

也许像这样:

.HTMLBody = "<html><body><p align="left">here is some text that will be auto centered</p></body></html>"

我想我的意思是,居中不是来自您的代码,除非有可能遗漏。 缺少格式标记将其留给呈现引擎来决定如何最好地显示它。

根据您随后的评论,我建议您坚持使用表格(根据我的经验,表格通常是最可靠的格式化HTML电子邮件的方式),但是您可能需要在文档HEAD中添加一些特定于Outlook的CSS才能整理出多余的内容间距:

/* Stop Outlook from adding extra spacing to tables. */

    table,
    td {
        mso-table-lspace: 0pt !important;
        mso-table-rspace: 0pt !important;
    }

如果有帮助,您可以在ContactMonkey中找到以上内容(以及更多提示)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM