Page 1 sur 1

[R] Fonction _INetSmtpMailCom et STARTTLS

Posté : mer. 19 juin 2019 14:07
par scorp84
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

Re: [..] Fonction _INetSmtpMailCom et STARTTLS

Posté : mer. 19 juin 2019 20:25
par walkson
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 ?

Re: [..] Fonction _INetSmtpMailCom et STARTTLS

Posté : jeu. 20 juin 2019 16:22
par scorp84
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

Re: [..] Fonction _INetSmtpMailCom et STARTTLS

Posté : jeu. 20 juin 2019 18:07
par walkson
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)

Re: [..] Fonction _INetSmtpMailCom et STARTTLS

Posté : ven. 21 juin 2019 16:50
par scorp84
Bonjour,

Merci encore pour votre réponse.

Je vais tester...

Cordialement.

BM

Re: [..] Fonction _INetSmtpMailCom et STARTTLS

Posté : lun. 01 juil. 2019 15:40
par scorp84
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

Re: [R] Fonction _INetSmtpMailCom et STARTTLS

Posté : lun. 01 juil. 2019 19:16
par walkson
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

Re: [R] Fonction _INetSmtpMailCom et STARTTLS

Posté : lun. 01 juil. 2019 20:42
par scorp84
... Toujours une solution :D

Très bonne idée.

Merci beaucoup.

BM