2012-10-10 27 views
5

¿Hay algún truco para hacer que VBScript CDO funcione con Amazon SES SMTP? No recibo ningún error, pero tampoco me envía mi correo electrónico de prueba. Cambiar SSL a False me da un error 530, así que sé que al menos estoy llegando al servidor. ¿Qué estoy haciendo mal?¿Hay algún truco para hacer que VBScript CDO funcione con Amazon SES SMTP?

EmailSubject = "Sending Email by CDO" 
EmailBody = "This is the body of a message sent via" & vbCRLF & _ 
     "a CDO.Message object using SMTP authentication." 

Const EmailFrom = "[email protected]" 
Const EmailFromName = "Me Test" 
Const EmailTo = "[email protected]" 
Const SMTPServer = "email-smtp.us-east-1.amazonaws.com" 
Const SMTPLogon = "xxxxxx" 
Const SMTPPassword = "xxxxxxx" 
Const SMTPSSL = True 
Const SMTPPort = 25 

Const cdoSendUsingPickup = 1 'Send message using local SMTP service pickup directory. 
Const cdoSendUsingPort = 2 'Send the message using SMTP over TCP/IP networking. 

Const cdoAnonymous = 0 ' No authentication 
Const cdoBasic = 1 ' BASIC clear text authentication 
Const cdoNTLM = 2 ' NTLM, Microsoft proprietary authentication 

' First, create the message 

Set objMessage = CreateObject("CDO.Message") 
objMessage.Subject = EmailSubject 
objMessage.From = """" & EmailFromName & """ <" & EmailFrom & ">" 
objMessage.To = EmailTo 
objMessage.TextBody = EmailBody 

' Second, configure the server 

objMessage.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 

objMessage.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTPServer 

objMessage.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic 

objMessage.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/sendusername") = SMTPLogon 

objMessage.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = SMTPPassword 

objMessage.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SMTPPort 

objMessage.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = SMTPSSL 

objMessage.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60 

objMessage.Configuration.Fields.Update 

' Now send the message! 

objMessage.Send 

Respuesta

7

CDO no es compatible con TLS, pero solo con SSL. AWS SES le permitirá utilizar SSL a través del puerto TCP 465. Tratar de utilizar SSL en el puerto 25 como que tiene en el guión informados debería devolver el mensaje de error:

CDO.Message.1: El transporte pierde su conexión con el servidor.

No sé por qué no obtienes ese error con este script. Hago. Intenta cambiar el puerto a 465. Cuando cambio el puerto a 465, funciona.

0

Esta es una gran rutina. Es necesario declarar objMessage como un objeto:

Dim objMessage como objeto

Además, dado que él está utilizando Const, si desea cambiar cualquiera de estos elementos, tendrá que declarar como cadenas y retire el Const de esas líneas. Tuve que sustituir 465 para SMTPPort, usar mi SES id/pw, ¡y funciona perfecto!

Cuestiones relacionadas