【问题标题】:Remove random linebreak in html Email删除 html 电子邮件中的随机换行符
【发布时间】:2016-10-18 13:13:25
【问题描述】:

这几天我一直遇到问题,我无法解释为什么会这样。我目前正在从 Excel 发送 HTML 电子邮件。大部分都可以正常工作,但我在某些段落中得到了这些随机换行符。这是我的代码 VBA 函数:

Public Function EmailRapport(ByVal MailTo As String, UgeNr As String, ByVal Kunde As String, MailAtc As String)

Dim Mail As New Message
Dim Config As Configuration: Set Config = Mail.Configuration

Config(cdoSendUsingMethod) = cdoSendUsingPort
Config(cdoSMTPServer) = "SMTPServer"
Config(cdoSMTPServerPort) = 25
Config(cdoSMTPAuthenticate) = cdoBasic
Config(cdoSMTPUseSSL) = True
Config(cdoSendUserName) = "Email"
Config(cdoSendPassword) = "Password"
Config.Fields.Update

Mail.MimeFormatted = True

Mail.To = MailTo
Mail.Subject = "Subject"

Dim HTMLSource as string
HTMLSource = "<html>"
HTMLSource = HTMLSource & "<head>"
HTMLSource = HTMLSource & "<style> p {font-family: verdana; font-size: 14px; margin:0px; padding:0px;}</style>"
HTMLSource = HTMLSource & "</head>"
HTMLSource = HTMLSource & "<body style=""background-color:#EEEEEE; margin: 0px"">"
HTMLSource = HTMLSource & "<table style=""width:100%; max-width: 630px; min-width: 260px; margin: 0 auto; border-collapse: separate; border-spacing: 5px;""><tr><td><img src=""http://synsbasen.dk/images/synsbasen_logo_tekst.png"" height=""85px;""></td></tr>"
HTMLSource = HTMLSource & "<tr>"
HTMLSource = HTMLSource & "<td style=""background-color: white; padding: 15px; border:1px solid #e1e1e1; "">"
HTMLSource = HTMLSource & "<p>Hej " & Kunde & "</p><br>"
HTMLSource = HTMLSource & "<p>Synsbasen tilbyder nu et statistikværktøj udviklet til at hjælpe de individuelle synshaller. "
HTMLSource = HTMLSource & "Med Synsbasen får du nemt og overskueligt et overblik over din synsvirksomhed, samt mulighed for at "
HTMLSource = HTMLSource & "sammenligne dig på kryds og tværs med dine nærmeste konkurrenter.</p>"
HTMLSource = HTMLSource & "<br>"
HTMLSource = HTMLSource & "<p><b>Hvordan virker det?</b></p>"
HTMLSource = HTMLSource & "<p>Synsbasen indsamler alt tilgængeligt data vedrørende syn og køretøjer m.m., som indgår i vores ugentlige "
HTMLSource = HTMLSource & "rapporter. En rapport sammenligner som udgangspunkt sin egen virksomhed med 3 nærtliggende synshaller. "
HTMLSource = HTMLSource & "Vores rapporter er inddelt i 3 hovedkategorier.</p>"
HTMLSource = HTMLSource & "<br>"
HTMLSource = HTMLSource & "<p><b>Standard:</b></p>"
HTMLSource = HTMLSource & "<p>Standard rapporten indeholder antal syn for hver af de valgte synshaller og den tilsvarende markedsandel "
HTMLSource = HTMLSource & "som de hver i sær har, samt et kig på udviklingen af markedsandel over de seneste 13 uger. Antal syn og "
HTMLSource = HTMLSource & "markedsandel kan både ses på ugebasis, såvel som de individuelle dage i den aktuelle uge.</p>"
HTMLSource = HTMLSource & "<br>"
HTMLSource = HTMLSource & "<p><b>Udvidet:</b></p>"
HTMLSource = HTMLSource & "<p>Den udvidede rapport yderligere information om fordelingen af synsarter og synstyper, samt hvornår på "
HTMLSource = HTMLSource & "døgnet de enkelte syn er foretaget.</p>"
HTMLSource = HTMLSource & "<br>"
HTMLSource = HTMLSource & "<p><b>Individuel:</b></p>"
HTMLSource = HTMLSource & "<p>Ønskes yderligere statistik kan vi tilbyde en række tilkøb, herunder:<br>"
HTMLSource = HTMLSource & "• Fordelingen af køretøjernes km-stand<br>• Fordelingen af køretøjernes alder<br>"
HTMLSource = HTMLSource & "• Gennemsnits antal fejl / bil<br>"
HTMLSource = HTMLSource & "• Meddele hvornår de valgte synshaller har haft tilsyn af Trafikstyrelsen, og herunder om de er gået op eller ned i karakter.!</p>"
HTMLSource = HTMLSource & "<br>"
HTMLSource = HTMLSource & "<p>Fælles for alle kategorier er, at de udgives ugentligt for den forhenværende uge. Der er vedhæftet et eksempel på en standard "
HTMLSource = HTMLSource & "og en udvidet rapport. Har jeres synsvirksomhed nogle specielle ønsker eller forslag, er du meget velkommen til at kontakte mig.</p>"
HTMLSource = HTMLSource & "<br>"
HTMLSource = HTMLSource & "<p><b>Hvad koster det?</b></p>"
HTMLSource = HTMLSource & "<p>Du tegner et løbende abonnement på 6 mdr. af gangen.<br>"
HTMLSource = HTMLSource & "Standard Rapport:  2.500 kr. / 6 mdr. (eks. moms.)<br>"
HTMLSource = HTMLSource & "Udvidet Rapport: 3.500 kr. / 6 mdr. (eks. moms.)<br>"
HTMLSource = HTMLSource & "Oprettelsesgebyr: 1.000 kr. (eks. moms.)<br>"
HTMLSource = HTMLSource & "Ændringer i valgte synshaller m.m.: 500 kr. (eks. moms.)</p>"
HTMLSource = HTMLSource & "<br>"
HTMLSource = HTMLSource & "<p>Har du spørgsmål eller kommentarer er du alti velkommen til at kontakte mig på info@synsbasen.dk eller tlf. 30 202 606. "
HTMLSource = HTMLSource & "Jeg kontakter dig en gang i næste uge, hvis ikke jeg hører fra dig inden.</p>"
HTMLSource = HTMLSource & "<br>"
HTMLSource = HTMLSource & "<p>Med venlig hilsen<br>Tobias Knudsen</p>"
HTMLSource = HTMLSource & "</td>"
HTMLSource = HTMLSource & "</tr>"
HTMLSource = HTMLSource & " <tr><td><p style=""text-align: center; font-family: verdana; font-size: 12px; margin:0px; padding:0px;""> Synsbasen</p></td></tr></table></body></html>"

Mail.HTMLBody = HTMLSource
On Error Resume Next
Mail.Send
If Err.Number <> 0 Then
MsgBox Err.Description, vbCritical, "There was an error"
Exit Function
Else
End If
End Function

在这里,您可以看到我收到的邮件中的图片。 “Forhenværende”这个词不应该用空格分开,它在 VBA 代码中用一个词清楚地拼写。

我在我的 VBA 代码中找不到多余的空间,所以我检查了电子邮件中的 HTML 代码。在这里我发现了一些有趣的东西。它添加了一个换行符,如下图所示:

当我将 HTML 源代码保存为 .html 文件并在浏览器中打开它时,它会按应有的方式显示邮件。你们有没有人遇到过类似的问题?

【问题讨论】:

  • 我假设这一行:Mail.HTMLBody = HTMLSourceOn Error Resume Next 实际上是两行,你不小心删除了返回?
  • 随机性如何?您可以强制它以任何一致性重复进行测试吗?如果不是,是否大约每 3 封电子邮件?每 50 次?等等?
  • 我想知道您是否遇到了字符串长度限制,需要将您的字符串分成 2 或 3 个不同的变量,然后将它们连接起来。不过,对此不确定。
  • @MattCremeens VBA 中的字符串最多可容纳 20 亿个字符。如果空间不足,我认为电子邮件的其余部分不会显示。

标签: vba excel html-email


【解决方案1】:

添加了这个,问题就解决了。

Mail.HTMLBodyPart.ContentTransferEncoding = "quoted-printable"

感谢所有帮助过的人!

【讨论】:

    猜你喜欢
    • 2016-05-04
    • 2017-12-07
    • 2014-05-21
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    相关资源
    最近更新 更多