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
$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
Merci d'avance.
Cordialement.
BM