[R] Fonction _INetSmtpMailCom et STARTTLS

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 367
Enregistré le : mar. 04 nov. 2008 21:51
Status : Hors ligne

[R] Fonction _INetSmtpMailCom et STARTTLS

#1

Message par scorp84 » mer. 19 juin 2019 13:07

Bonjour à tous,

J'utilisais pour envoyer les mails la fonction _INetSmtpMailCom et cela fonctionnait nickel sauf que nous avons migré sur Outlook 365 et la fonction ne fonctionne plus.

Je pense que le problème vient du chiffrement qui n'est plus SSL mais STARTTLS.

Les paramètres du serveur smtp sont :
Serveur: smtp.office365.com
Port : 587
Chiffrement: STARTTLS

J'ai mis le port à 587 et ssl à 1.

Voici la fonction :
Func _INetSmtpMailCom($mail_A, $mail_objet = "", $mail_texte = "", $mail_pj = "", $mail_CC = "", $mail_CCI = "")


        $s_SmtpServer = "smtp.office365.com" ; Serveur SMTP
        $s_FromName = "RAPPORT AUTOIT" ; Nom expéditeur
        $s_FromAddress = "xxx" ; Mail expéditeur
        ;$mail_pj = "" ; Pièce jointe (à laisser vide si pas de PJ)
        $mail_CC = "" ; Mail de copie (à laisser vide si non nécessaire)
        $mail_CCI = "" ; Mail de copie invisible (à laisser vide si non nécessaire)
        $s_Username = "xxx" ; Login compte mail
        $s_Password="xxx"
        $s_IPPort = 587 ; Port SMTP : 465 pour SSL / 25 pour non SSL
        $s_ssl = 1 ; Mettre 1 si envoi en SSL, sinon 0


        $objEmail = ObjCreate("CDO.Message")
        $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
        $objEmail.To = $mail_A
        Local $i_Error = 0
        Local $i_Error_desciption = ""
        If $mail_CC <> "" Then $objEmail.Cc = $mail_CC
        If $mail_CCI <> "" Then $objEmail.Bcc = $mail_CCI
        $objEmail.Subject = $mail_objet
        If StringInStr($mail_texte,"<") and StringInStr($mail_texte,">") Then
                $objEmail.HTMLBody = $mail_texte
        Else
                $objEmail.Textbody = $mail_texte & @CRLF
        EndIf
        If $mail_pj <> "" Then
                Local $S_Files2Attach = StringSplit($mail_pj, ";")
                For $x = 1 To $S_Files2Attach[0]
                        $S_Files2Attach[$x] = _PathFull ($S_Files2Attach[$x])
                        If FileExists($S_Files2Attach[$x]) Then
                                $objEmail.AddAttachment ($S_Files2Attach[$x])
                        Else
                                $i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $S_Files2Attach[$x]
                                SetError(1)
                                return 0
                        EndIf
                Next
        EndIf
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $s_IPPort
;Authenticated SMTP
        If $s_Username <> "" Then
                $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
                $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
                $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
        EndIf
        If $s_ssl Then
                $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
        EndIf
;Update settings
        $objEmail.Configuration.Fields.Update
; Sent the Message
        $objEmail.Send
        if @error then
                SetError(2)
                return $oMyRet[1]
        EndIf
EndFunc ;==>_INetSmtpMailCom
Quelqu'un aurait-il une idée pour paramétrer le STARTTLS ?

Merci d'avance.

Cordialement.

BM
Modifié en dernier par scorp84 le lun. 01 juil. 2019 14:40, modifié 1 fois.

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 728
Enregistré le : ven. 12 août 2011 18:49
Localisation : Essonne
Status : Hors ligne

Re: [..] Fonction _INetSmtpMailCom et STARTTLS

#2

Message par walkson » mer. 19 juin 2019 19:25

Bonjour,
Je ne vais pas être d'une grande aide pour Outlook 365 que je n'utilise pas mais je me demandais si c'était indispensable d'utiliser OutLook sachant que c'est pour du SMTP, donc pour l'envoi de mails. Un compte à Gmail, Laposte ou autre et utiliser leur SMTP ne ferait pas l'affaire ?
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi

Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 367
Enregistré le : mar. 04 nov. 2008 21:51
Status : Hors ligne

Re: [..] Fonction _INetSmtpMailCom et STARTTLS

#3

Message par scorp84 » jeu. 20 juin 2019 15:22

Bonjour,

Merci pour votre réponse.

En fait, j'aimerai que cela soit "propre" et que l'expéditeur affiché soit un de nos comptes et non pas un compte Gmail.

Cordialement.

BM

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 728
Enregistré le : ven. 12 août 2011 18:49
Localisation : Essonne
Status : Hors ligne

Re: [..] Fonction _INetSmtpMailCom et STARTTLS

#4

Message par walkson » jeu. 20 juin 2019 17:07

Sinon il y a l'UDF OutlookEX de Water sur le forum US mais je ne sais pas s'il fonctionne pour Outlook 365
Il me semble aussi qu'il faut débloquer outlook sur leur site pour utiliser un application (tout comme Gmail d'ailleurs)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi

Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 367
Enregistré le : mar. 04 nov. 2008 21:51
Status : Hors ligne

Re: [..] Fonction _INetSmtpMailCom et STARTTLS

#5

Message par scorp84 » ven. 21 juin 2019 15:50

Bonjour,

Merci encore pour votre réponse.

Je vais tester...

Cordialement.

BM

Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 367
Enregistré le : mar. 04 nov. 2008 21:51
Status : Hors ligne

Re: [..] Fonction _INetSmtpMailCom et STARTTLS

#6

Message par scorp84 » lun. 01 juil. 2019 14:40

Bonjour,

J'ai testé l'UDF mais il semble qu'il soit pour le client lourd Outlook.

Je vais partir sur votre idée d'utiliser un compte Gmail.

Merci pour votre aide.

Cordialement.

BM

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 728
Enregistré le : ven. 12 août 2011 18:49
Localisation : Essonne
Status : Hors ligne

Re: [R] Fonction _INetSmtpMailCom et STARTTLS

#7

Message par walkson » lun. 01 juil. 2019 18:16

Bonjour,
juste après $objEmail.Subject = $mail_objet
vous pouvez rajouter $objEmail.replyTo= Chr(34) & "scorp84 " & Chr(34)&"<" & "scorp84 @orange.fr"& ">"
La réponse au mail sera votre adresse :D
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi

Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 367
Enregistré le : mar. 04 nov. 2008 21:51
Status : Hors ligne

Re: [R] Fonction _INetSmtpMailCom et STARTTLS

#8

Message par scorp84 » lun. 01 juil. 2019 19:42

... Toujours une solution :D

Très bonne idée.

Merci beaucoup.

BM

Répondre