2012-10-10 7 views
5

C'è qualche trucco per far funzionare il CDO VBScript con Amazon SES SMTP? Non ottengo alcun errore, ma non mi invia nemmeno la mia e-mail di prova. Cambiare SSL in False mi dà un errore 530, quindi so che sto raggiungendo almeno il server. Che cosa sto facendo di sbagliato?C'è qualche trucco per far funzionare il CDO VBScript 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 

risposta

7

CDO non supporta TLS, ma solo SSL. AWS SES ti consente di utilizzare SSL sulla porta TCP 465. Provare a utilizzare SSL sulla porta 25 come nello script che hai pubblicato dovrebbe restituire il seguente messaggio di errore:

CDO.Message.1: Il trasporto ha perso la connessione a il server.

Non so perché non si ottiene questo errore con questo script. Lo voglio. Prova a cambiare la porta in 465. Quando cambio la porta in 465, funziona.

0

Questa è una grande routine. È necessario dichiarare objMessage come oggetto:

Dim objMessage come oggetto

Inoltre, dal momento che lui sta usando Const, se si desidera modificare qualsiasi di questi elementi, è necessario dichiararli come stringhe e rimuovere la Const da quelle linee. Ho dovuto sostituire 465 per SMTPPort, usare il mio id SES/pw, e funziona perfettamente!