2012-10-10 14 views
5

Gibt es einen Trick, VBScript CDO mit Amazon SES SMTP zu arbeiten? Ich bekomme keine Fehler, aber es schickt mir auch meine Test-E-Mail nicht. Wenn ich SSL auf False ändere, bekomme ich einen Fehler von 530, also weiß ich, dass ich mindestens den Server erreiche. Was mache ich falsch?Gibt es einen Trick, VBScript CDO mit Amazon SES SMTP zu arbeiten?

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 

Antwort

7

CDO unterstützt kein TLS, sondern nur SSL. AWS SES ermöglicht die Verwendung von SSL über den TCP-Port 465. Der Versuch, SSL über Port 25 wie im Skript zu verwenden, sollte folgende Fehlermeldung zurückgeben:

CDO.Message.1: Der Transport hat seine Verbindung verloren der Server.

Ich weiß nicht, warum Sie diesen Fehler mit diesem Skript nicht erhalten. Ich mache. Versuchen Sie, den Port auf 465 zu ändern. Wenn ich den Port auf 465 ändere, funktioniert es.

0

Dies ist eine großartige Routine. Sie müssen objMessage als Objekt deklarieren:

Dim objMessage as Object

Auch, weil er Konst verwendet, wenn Sie eines dieser Elemente ändern möchten, müssen Sie sie als Zeichenketten erklären und entfernen Sie die Const von diesen Zeilen. Ich musste 465 für den SMTPPort ersetzen, meine SES ID/PW benutzen, und es funktioniert perfekt!