ASP、vbscript、通过 AWS 发送的 CDO 电子邮件被截断了?

ASP, vbscript, CDO Email through AWS is truncated?

我正在将这个经典的 ASP 应用程序移动到 AWS 并使用 AWS SES SMTP 发送站点电子邮件(自动,post 注册电子邮件)。

所以,下面的代码可以工作,但是当电子邮件到达时它被截断了(不完整)?

邮件功能:

Function Sendmail(Sender, Subject, Recipient, Body)
 dim myMail, strServer
 strServer = Request.ServerVariables("server_name")
 if strServer <> "localhost" then
   Set myMail=Server.CreateObject("CDO.Message")
   myMail.Subject=Subject
   myMail.From=Sender
   myMail.To=Recipient
   myMail.HTMLBody=Body
   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")="email-smtp.us-east-1.amazonaws.com"
   'Server port
   myMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=465
   'requires authentication
   myMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1
   'username
   myMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/sendusername")="a username"
   'password
   myMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/sendpassword")="a password"
   'startTLS
   myMail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpusessl")=true      
   myMail.Configuration.Fields.Update
   myMail.Send
   set myMail=nothing
 end if 
End function

邮件正文

<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'><html lang='en'><head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1258'> <meta name='viewport' content='width=device-width, initial-scale=1'> <meta http-equiv='X-UA-Compatible' content='IE=edge'> <meta name='format-detection' content='telephone=no'> <title>Title</title> <link rel='stylesheet' type='text/css' href='http://www.website.com/styles.css'> <link rel='stylesheet' type='text/css' href='http://www.website.com/responsive.css'></head><body style='margin:0; padding:0;' bgcolor='#F0F0F0' leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'><table border='0' width='100%' height='100%' cellpadding='0' cellspacing='0' bgcolor='#F0F0F0'><tr><td align='center' valign='top' bgcolor='#F0F0F0' style='background-color: #F0F0F0;'> <br/> <table border='0' width='600' cellpadding='0' cellspacing='0' class='container'><tr><td class='header' align='left'><img src='http://www.website.com/images/email/logo_small_en.png'/> </td></tr><tr> <td class='container-padding content' align='left' bgcolor='#FFFFFF'> <br/><div class='title'>Welcome to the site! </div><br/><div class='body-text'> <p>Welcome to the website<div class='hr'></div><br/><div class='subtitle'>Have fun!</div><br/> </td></tr><tr> <td class='container-padding footer-text' align='left'><br/>&copy; 2016 <br/> <br/>You are receiving this email because you registered for the website. Please click here to <a href=''>unsubscribe</a>. <br/> </td></tr></table></td></tr></table></body></html>

总是在同一个地方截断?

<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'><html lang='en'><head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1258'> <meta name='viewport' content='width=device-width, initial-scale=1'> <meta http-equiv='X-UA-Compatible' content='IE=edge'> <meta name='format-detection' content='telephone=no'> <title>Title</title> <link rel='stylesheet' type='text/css' href='http://www.website.com/styles.css'> <link rel='stylesheet' type='text/css' href='http://www.website.com/responsive.css'></head><body style='margin:0; padding:0;' bgcolor='#F0F0F0' leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'><table border='0' width='100%' height='100%' cellpadding='0' cellspacing='0' bgcolor='#F0F0F0'> <tr> <td align='center' valign='top' bgcolor='#F0F0F0' style='background-color: #F0F0F0;'> <br/> <table border='0' width='600' cellpadding='0' cellspacing='0' class='container'> <tr> <td class='he

我好像查不到这个?是我的函数错误还是邮件正文错误?这是 AWS 的限制吗?

感谢您的想法,

当电子邮件的一行超过服务器定义的长度时,SMTP 服务器会抛出 "Line too long" 错误。由于您的消息总是在同一位置被截断,请尝试在消息正文中插入换行符。我知道 AWS SES SMTP 可以 return 这个 error but I am unsure as to what the limit is. Here is a related conversation 有类似的错误和 CDO 供参考。

CDO 默认使用 7bit 进行内容传输编码,不会截断长行。

您不需要用户定义的函数,但需要为邮件正文指定适当的内容传输编码。

8bitquoted-printablebase64 是标准传输编码,将处理长行。

'...
myMail.Configuration.Fields.Update
myMail.HTMLBodyPart.ContentTransferEncoding = "8bit"
myMail.Send
'...