通过HTMLBody格式发送ASP Classic CDOSYS电子邮件

时间:2017-05-22 12:29:42

标签: asp-classic cdo.message

使用HTMLBody格式在ASP Classic中使用CDOSYS消息系统发送电子邮件时遇到问题。它似乎有一个字符限制,当发送电子邮件时,它会在电子邮件底部切断消息。起初,我认为邮件是在整个电子邮件写入之前发送的,但经过一些故障排除和研究后,使用HTMLBody时会出现某种CDOSys邮件字符限制。我的问题是,有没有办法覆盖字符限制或绕过限制?这仅适用于HTMLBODY。

编辑:"重复"国旗不会帮助我。这不是截断问题,而是HTMLBody限制的问题,可防止在消息中完全发送冗长的消息。我检查了那篇文章,而不是我在寻找答案。这个帖子的回答足以回答我的问题。谢谢大家。

这是我的代码:

         Set myMail=CreateObject("CDO.Message")


                        HTML = HTML & "<html>"
                        HTML = HTML & "<body>"
                        HTML = HTML & "<font face='calibri'>"

                        HTML = HTML & "<img src='http://" & SupportTagURLWebPath & "/images/SkypeEmailHeader.png'>"
                        HTML = HTML & "<br><Br>"

                        HTML = HTML & "<font face='calibri'>"                   
                        HTML = HTML & "<b>To " & Request.Form("SkypeTemplateName") & ":</b>"
                        HTML = HTML & "<br><br>"

                        HTML = HTML & "Thank you for contacting the Bank of America Service Desk. We're committed to providing seamless support in the moments that matter."
                        HTML = HTML & "<br><br>"                            
                        HTML = HTML & "We heard your concerns with Skype for Business audio/video, and recommend using approved Skype for Business devices to resolve the issue."
                        HTML = HTML & "<br><br>"
                        HTML = HTML & "<h4><font color='red'>What do I need to do?</font></h4>"

                        HTML = HTML & "<div style='background-color: #FFF8DC;'>"
                        HTML = HTML & "1. Visit the <a href='http://u.go/pchk'>Skype for Business Peripheral Checker</a> & complete the form.<br>"
                        HTML = HTML & "<img src='http://" &SupportTagURLWebPath & "/images/SkypeEmailbody.png'><br>"
                        HTML = HTML & "4. Once approved, your new device(s) will be shipped to you. To get started, visit the <a href='http://u.go/tIxvB5'>Skype for Business page</a> and select <i>Setup your equipment</i> tab."                     
                        HTML = HTML & "</div>"
                        HTML = HTML & "<br><br>"

                        HTML = HTML & "<br>"
                        HTML = HTML & "If you still encounter Skype for Business audio/visual issues with your new device(s), please <a href='http://u.go/7I76vm'>submit a web ticket</a> and one of our expert Bank of America Service Desk employees will reach out to you."
                        HTML = HTML & "Thank you,"
                        HTML = HTML & "<br>"
                        HTML = HTML & "Premium Service Desk"            


                        HTML = HTML & "<br><Br>"
                        HTML = HTML & "<img src='http://" & SupportTagURLWebPath & "/images/SkypeEmailFooter.png'>"     

                        HTML = HTML & "</font>"                 
                        HTML = HTML & "</body>"
                        HTML = HTML & "</html>" 



     myMail.Subject= "Skype for Business audio/visual experience"
     myMail.From=EMAILADDRESS
     myMail.To=Request.Form("SkypeTemplateEmail")
     'mymail.CC= Request.Form("displayemail")
     myMail.BCC="psd.wmwhc@bao.com"
     myMail.ReplyTo="Do Not Reply"
     'myMail.TextBody="This is a message."
     myMail.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/sendusing")=2
     'Name or IP of remote SMTP server
     myMail.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpserver")="amta3dns.bo.com"
     'Server port
     myMail.Configuration.Fields.Item _
     ("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25 
    myMail.Configuration.Fields.Update


    'myMail.TextBody= Request.Form("genfeedback") 
    myMail.HTMLBody=HTML

    myMail.Send
     set myMail=nothing 

3 个答案:

答案 0 :(得分:3)

这是一个行长问题。没有crlf你最大长度为998个字符。最好的办法是编写一个在mid-string中拆分内容的函数,避免使用html标签。 HTML文字,例如在一个段落中,忽略了换行符。

RFC

  

此标准对数量有两个限制      一行中的字符。每行字符必须不超过      998个字符,不应超过78个字符,不包括      CRLF。

     

998字符限制是由于许多实现中的限制      发送,接收或存储Internet消息格式消息      根本无法处理一行超过998个字符。接收      实现可以很好地处理任意大的数字      为了鲁棒性,一行中的字符。但是,有这样的      许多实施(符合运输      [RFC2821]的要求不接受包含更多内容的消息      超过1000个字符,包括每行的CR和LF,这很重要      对于不创建此类消息的实现。

     

更为保守的78字符建议是适应      显示这些的用户界面的许多实现      可能截断或灾难性地包装显示的消息      尽管如此,每行超过78个字符      实现不符合此意图      规范(和[RFC2821]的规范,如果它们确实导致      信息丢失)。同样,即使有这种限制      消息,它是显示消息

的实现的障碍

感谢您访问emailonacid的博客作为指针。

答案 1 :(得分:1)

我能够通过另一个进行谷歌搜索的线程来解决这个问题。如果您为电子邮件的每3-5行放置以下行,则似乎“重置”或将数字限制循环回到开头而不更改电子邮件的格式。我不确定这是否是正确的处理方式,但它似乎适用于我今天创建的许多消息,这些消息具有相当长的消息,否则在消息发送时会被切断。我希望这有助于解决这个问题。

HTML = HTML & vbCrLf

答案 2 :(得分:0)

我没有在脚本中插入消息正文,而是使用大量的HTML = HTML和“文本在这里”,而是创建了一个实际的HTML文件,并将每一行读入HTMLBody:

Set myFSO=Server.CreateObject("Scripting.FileSystemObject")

' Read Email Template File

Set myFile=myFSO.OpenTextFile(Server.MapPath("..\msg\"+Request.Form("Template")+".html"), 1)
EmailBodyTemplate=""
Do While myFile.AtEndOfStream=False
  EmailBodyTemplate=EmailBodyTemplate&myFile.ReadLine
Loop
myFile.Close

Set myFile=Nothing
Set myFSO=Nothing


myMail.HTMLBody=EmailBodyTemplate

这不仅会自动将vbCrLf放置在从文件读取的每一行的末尾,而且还使该函数具有通用性,以便您可以通过更改模板名称来发送所需的任何电子邮件。