通过AWS的ASP,vbscript,CDO电子邮件被截断了吗?

时间:2016-09-17 15:40:43

标签: email amazon-web-services vbscript asp-classic

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

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

邮件功能:

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的限制吗?

感谢您的想法,

2 个答案:

答案 0 :(得分:1)

当电子邮件的某一行超过某个服务器定义的长度时,SMTP服务器可能会抛出“Line too long”错误。由于您的邮件总是在同一位置截断,请尝试在邮件正文中插入换行符。我知道AWS SES SMTP可以返回此error,但我不确定该限制是什么。这是一个相关的conversation,它有类似的错误和CDO供参考。

答案 1 :(得分:1)

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

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

8bitquoted-printablebase64是标准转移编码,可以处理长线。

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