2012-10-10 34 views
5

Czy jest jakaś sztuczka polegająca na tym, że CDB VBScript działa z usługą Amazon SES SMTP? Nie dostaję żadnych błędów, ale nie wysyłają one również mojej testowej wiadomości e-mail. Zmiana SSL na False daje mi błąd 530, więc wiem, że przynajmniej docieram do serwera. Co ja robię źle?Czy jest jakaś sztuczka polegająca na tym, że CDB VBScript działa z usługą 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 

Odpowiedz

7

CDO nie obsługuje TLS, ale tylko SSL. AWS SES umożliwia korzystanie z protokołu SSL przez port TCP 465. Próba użycia protokołu SSL przez port 25, tak jak w skrypcie, który wysłałeś, powinna zwrócić następujący komunikat o błędzie:

CDO.Message.1: Transport utracił połączenie z serwer.

Nie wiem, dlaczego ten błąd nie występuje w tym skrypcie. Ja robię. Spróbuj zmienić port na 465. Kiedy zmieniam port na 465, działa.

0

To świetna procedura. Musisz zadeklarować objMessage jako obiekt:

Dim objMessage jako przedmiot

Ponadto, ponieważ jest on za pomocą mech, jeśli chcesz zmienić którykolwiek z tych elementów, trzeba będzie zadeklarować je jako ciągi i usunąć Const z tych linii. Musiałem zastąpić 465 dla SMTPPort, użyć mojego identyfikatora SES id/pw i działa idealnie!