gpt4 book ai didi

vbscript - 空格和回车被添加到 HTML 电子邮件

转载 作者:行者123 更新时间:2023-12-05 04:28:44 25 4
gpt4 key购买 nike

我们有一个服务器生成的 HTML 文件 ( myFile.html ),我们将其嵌入发送给客户的电子邮件中。多年来,我们一直在使用这种方法,几乎​​没有出现过问题。我们通过 II6 使用带有 smtp 服务器的 Windows Server 2012。最近,电子邮件中的 HTML 出现了偏差。检查源文件时,一切看起来都很好。直接打开 HTML 文件以在浏览器中查看会如您所愿。这是我们用来将文件读入内存以准备发送电子邮件的代码:

        Set objFile = objFSO.OpenTextFile(strFilePath)
Do While objFile.AtEndOFStream <>True
line = objFile.ReadLine
If Instr(1, line, "<table") > 0 And strHeaderWritten = "N" Then
strHeaderWritten = "Y"
strFileContent=strFileContent & strHeader
End If
strFileContent=strFileContent & line
Loop
set objFile = Nothing

然后我们将内容添加到邮件中并发送:

    strBody = strFileContent
Set objMail = CreateObject("CDO.Message")

Set objMail.Configuration = cdoConfig
objMail.From = strFrom
objMail.ReplyTo = strReplyTo

objMail.To = strTo

objMail.Subject = strSubject
objMail.HTMLBody = strBody

objMail.Fields("urn:schemas:httpmail:importance").Value = strImportance
objMail.Send

下面是它在电子邮件中吐出的内容的示例。源码中没有错误: enter image description here

有没有其他人遇到过这种情况?

为了寻找解释,我为此苦苦思索了几个小时。非常感谢阅读!

我尝试对电子邮件使用 ADO Stream 方法,但结果仍然一样:

        Dim objStream
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 2 'adTypeText
objStream.CharSet = Application("CharacterSet")
objStream.Open
objStream.LoadFromFile strFilePath

Do While Not objStream.EOS
line = objStream.ReadText(-2)
If Instr(1, line, "<table") > 0 And strHeaderWritten = "N" Then
strHeaderWritten = "Y"
strFileContent=strFileContent & strHeader
End If
If Instr(1, line, "< table") > 0 Then
strFileContent=strFileContent & "<h3>Broken HTML</h3>"
End If
strFileContent=strFileContent & line
Loop
objStream.Close
Set objStream = Nothing

如您所见,我还添加了一项检查,以检查我看到的一个持续性错误,其中有一个 space。插入 < 之间和 table .以这种方式检查输出并没有像检查文本中添加的空间那样捕获问题。所以它一定是在写完之后发生的,否则我需要使用正则表达式进行测试。我接下来试试。我仍然在多个电子邮件客户端中看到它。下面是 ADO 流的后测试示例:

enter image description here

最佳答案

这似乎是 CDO 中的常见问题。我在网上找到了一些关于空格随机插入到 HTMLbody 中的问题的引用资料。

一个答案是让 HTML 正文不是一个长字符串,因为 CDO 然后会插入随机空格,而是自己包含空格,这样 CDO 就不必这样做了。您可以尝试在发送的文本中添加 VbCrLf 或纯空格。

第二个建议对我来说更有意义;这可能是一个编码问题。这也解释了为什么添加您自己的空格可能是一种解决方法。反正; CDO 允许在发送前设置 CDO.Message 对象的编码。尝试 objMail.BodyPart.ContentTransferEncoding = "quoted-printable" 看看是否能解决问题。

关于vbscript - 空格和回车被添加到 HTML 电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72537400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com