excel - 将消息发送到非 Outlook 客户端时,VBA HTML 格式丢失

标签 excel vba outlook outlook-redemption

我有一个宏,可以解析电子表格并根据解析的数据编译电子邮件。我面临的问题是视觉格式。
当我使用宏将电子邮件发送到 Outlook 电子邮件地址时,一切正常(html 代码有效),但是当我将相同的电子邮件发送到 gmail Web 客户端时,我丢失了 html 并且我的电子邮件已发送纯文本。
这是我的电子邮件功能的样子:

Function OutlookEmail(SendTo As String, subject As String, Message As String, send As Boolean)
    Dim Outlook As Object, NewMail As Object, SafeItem As Object, Attach As Object

    Set Outlook = CreateObject("Outlook.Application")
    Set SafeItem = CreateObject("Redemption.SafeMailItem")
    Set NewMail = Outlook.CreateItem(0)
    SafeItem.Item = NewMail

    With SafeItem
        .Recipients.Add SendTo
        .Recipients.ResolveAll
        .subject = subject
        .HTMLBody = Message
    End With

    If send = True Then SafeItem.send
    If send = False Then SafeItem.display

    Set Outlook = Nothing
    Set NewMail = Nothing
    Set SafeItem = Nothing
    Set Attach = Nothing
End Function


Redemption 是一个电子邮件插件,可帮助自动发送所有内容,Message 包含 HTML 和内联 css 格式的文本。

这是发送到 Outlook 客户端时的样子:
http://snag.gy/bSLTp.jpg

除了下面,这是一个带有一些格式的简单循环。
CSS变量:
Dim CSS_p As String, CSS_phone As String, CSS_table As String, CSS_th As String, CSS_td As String
    Dim CSS_first As String, CSS_last As String, CSS_jlist As String, CSS_warning As String, CSS_accent As String

CSS_p = " style='line-height: 16px;color: #666;margin-top: 10px; margin-bottom: 15px; margin-left: 20px; margin-right: 10px;'"
    CSS_phone = " style='font-weight: bold;'"
    CSS_table = " style='font-size: 14px; text-align: center;'"
    CSS_th = " style='padding: 0 0.5em; text-align:center; " & _
            "border-top: 1px solid #FB7A31; border-bottom: 1px solid #FB7A31; background-color: #FFC;'"
    CSS_td = " style='border: 1px solid #CCC;padding: 0 0.5em; text-align:center;'"
    CSS_first = " style='border-top: 1px solid #CCC; border-bottom: 1px solid #CCC; border-left: none; border-right: 1px solid #CCC'"
    CSS_last = " style='border-top: 1px solid #CCC; border-bottom: 1px solid #CCC; border-left: 1px solid #CCC; border-right: none;'"
    CSS_jlist = " style='border-collapse:collapse;line-width:1px;'"
    CSS_warning = " style='line-height: 16px;color: red;margin-top: 10px; margin-bottom: 15px; margin-left: 20px; margin-right: 10px;'"
    CSS_accent = " style='text-decoration:underline; font-weight:bold;'"

表格内容:
job_list = job_list & "<tr><td" & CSS_td & ">" & account & "</td>" & _
                                          "<td" & CSS_td & ">" & location & "</td>" & _
                                          "<td" & CSS_td & ">" & address & "</td>" & _
                                          "<td" & CSS_td & ">" & work_order & "</td>" & _
                                          "<td" & CSS_td & ">" & description & "</td>" & _
                                          "<td" & CSS_td & ">" & service_date & "</td></tr>"

信息:
           email_body = "<html><head></head>" & _
                            "<body><p" & CSS_p & ">" & Greeting() & _
                            "</p>" & _
                            "<p" & CSS_p & ">   Our records indicate that we have not received signed paperwork for the " & _
                            "following jobs as of yet:</p>" & _
                            "<table" & CSS_table & ">" & _
                            "<th" & CSS_th & ">Account</th>" & _
                            "<th" & CSS_th & ">Store Number</th>" & _
                            "<th" & CSS_th & ">Address</th>" & _
                            "<th" & CSS_th & ">Work Order#</th>" & _
                            "<th" & CSS_th & ">Description</th>" & _
                            "<th" & CSS_th & ">Service Date</th>" & _
                            job_list & "</table>" & _
                            "<p" & CSS_p & ">Please remember to submit the work orders, your invoices and checklists (if applicable) for the jobs " & _
                            "referenced above." & _
                            "<p" & CSS_p & ">You may send the paperwork via:</p>" & _
                            "<ul><li>Fax to (000) 000 0000 or,</li>" & _
                            "<li>Email to: xx@xxxxxxxxx.com (please indicate your crew code in the email subject)</li></ul>" & _
                            "<p" & CSS_p & ">All work orders must be signed and stamped by the store manager on duty at the time of service. If the " & _
                            "stamp is not available, please ask the manager to write that on the work order (and checklists if applicable), as well as " & _
                            "initial the note. Submitting un-signed and un-stamped paperwork, that is not properly filled out, may result in your " & _
                            "invoices being rejected.</p>" & _
                            "<p" & CSS_p & ">Thank you for your cooperation.</p>" & _
                            HTMLSignature & "</body></html>"
            OutlookEmail SendTo:=email, subject:=email_subject, Message:=email_body, send:=True

最佳答案

您忘记将电子邮件消息的正文格式设置为 HTML,Outlook 非常擅长自动检测这些内容。

将 BodyFormat 设置为 olFormatHTML 女巫我认为是值 2

我在这台机器上没有兑换,所以我可以检查,但它应该类似于

With SafeItem
    .Recipients.Add SendTo
    .Recipients.ResolveAll
    .subject = subject
    .HTMLBody = Message
    .BodyFormat = olFormatHTML ' or the value 2
End With

关于excel - 将消息发送到非 Outlook 客户端时,VBA HTML 格式丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19256711/

相关文章:

excel - 使用 VBA 检查 Excel 中的工作表

vba - VBA 代码中的参数数量错误或无效的属性分配错误

c# 通过outlook 2013发送html电子邮件

excel - 使用(范围作为条件)的自动过滤器适用于字符串,但不适用于数字(即使在数字转换为字符串之后)

asp.net - 在 ASP.NET Linq 数据绑定(bind)中将 Gridview 数据导出到 Excel

c# - 如何在不安装 Microsoft Office 的情况下在 C# 中创建 Excel(.XLS 和 .XLSX)文件?

循环中的 VBA 复制和粘贴

vba - 使用 Excel VBA 控制 Web 浏览器

outlook - 向 Microsoft 团队 channel 发送电子邮件不保留 css 格式

hyperlink - Microsoft Outlook 超链接中的尾随等号被丢弃