2016-09-17 48 views
1

我将这个经典的ASP应用程序移动到AWS,并使用AWS SES SMTP发送站点电子邮件(自动,邮寄注册邮件)。通过AWS的ASP,vbscript,CDO电子邮件被截断?

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

邮件功能:

Function Sendmail(Sender, Subject, Recipient, Body) 
 
\t dim myMail, strServer 
 
\t strServer = Request.ServerVariables("server_name") 
 
\t if strServer <> "localhost" then 
 
\t Set myMail=Server.CreateObject("CDO.Message") 
 
\t myMail.Subject=Subject 
 
\t myMail.From=Sender 
 
\t myMail.To=Recipient 
 
\t myMail.HTMLBody=Body 
 
\t myMail.Configuration.Fields.Item _ 
 
\t ("http://schemas.microsoft.com/cdo/configuration/sendusing")=2 
 
\t 'Name or IP of remote SMTP server 
 
\t myMail.Configuration.Fields.Item _ 
 
\t ("http://schemas.microsoft.com/cdo/configuration/smtpserver")="email-smtp.us-east-1.amazonaws.com" 
 
\t 'Server port 
 
\t myMail.Configuration.Fields.Item _ 
 
\t ("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=465 
 
\t 'requires authentication 
 
\t myMail.Configuration.Fields.Item _ 
 
\t ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1 
 
\t 'username 
 
\t myMail.Configuration.Fields.Item _ 
 
\t ("http://schemas.microsoft.com/cdo/configuration/sendusername")="a username" 
 
\t 'password 
 
\t myMail.Configuration.Fields.Item _ 
 
\t ("http://schemas.microsoft.com/cdo/configuration/sendpassword")="a password" 
 
\t 'startTLS 
 
\t myMail.Configuration.Fields.Item _ 
 
\t ("http://schemas.microsoft.com/cdo/configuration/smtpusessl")=true \t \t \t \t \t \t 
 
\t myMail.Configuration.Fields.Update 
 
\t myMail.Send 
 
\t set myMail=nothing 
 
\t end if \t 
 
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的限制吗?当电子邮件的线超过某个服务器定义的长度

感谢您的想法,

回答

1

SMTP服务器可以抛出一个“行太长”错误。由于您的邮件总是在相同的位置截断,因此请尝试在邮件正文中插入换行符。我知道AWS SES SMTP可以返回这个error,但我不确定限制是什么。这里有一个相关的conversation,带有类似的错误和CDO供参考。

+0

谢谢!会试试这个! – user1964234

+0

太棒了!我从这个线程中使用了WordWrap函数,并将其应用于HTML主体。作品! http://forums.devarticles.com/asp-development-3/send-email-via-asp-15546.html – user1964234

+0

呜呼!感谢过去的ASP/ADO的爆炸! – jbird

1

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

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

8bitquoted-printablebase64是标准的传输编码将照顾的长线。

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