6 votes

Existe-t-il une astuce pour que VBScript CDO fonctionne avec Amazon SES SMTP ?

Existe-t-il une astuce pour faire fonctionner VBScript CDO avec Amazon SES SMTP ? Je ne reçois aucune erreur, mais je ne reçois pas non plus mon e-mail de test. En remplaçant SSL par False, j'obtiens une erreur 530, ce qui me permet de savoir que j'atteins au moins le serveur. Que dois-je faire de mal ?

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 = "yyy@xxx.com"
Const EmailFromName = "Me Test"
Const EmailTo = "eee@aaa.com"
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

7voto

Seamus Points 86

CDO ne prend pas en charge TLS, mais uniquement SSL. AWS SES vous permettra d'utiliser SSL sur le port TCP 465. Essayer d'utiliser SSL sur le port 25 comme vous l'avez fait dans le script que vous avez posté devrait retourner le message d'erreur suivant :

CDO.Message.1 : Le transport a perdu sa connexion avec le serveur.

Je ne sais pas pourquoi vous n'avez pas cette erreur avec ce script. Je l'ai. Essayez de changer le port à 465. Quand je change le port pour 465, ça marche.

0voto

C'est une excellente routine. Vous devez déclarer objMessage comme un objet :

Dim objMessage comme objet

De plus, comme il utilise Const, si vous souhaitez modifier l'un de ces éléments, vous devrez les déclarer en tant que chaînes de caractères et supprimer Const de ces lignes. J'ai dû substituer 465 pour le SMTPPort, utiliser mon id/pw SES, et ça marche parfaitement !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X