Page 1 sur 1

envoyer un email avec outlook

Posté : sam. 05 sept. 2020 12:28
par Cengokill
Bonjour à tous, je voudrais envoyer un email dans un programme. Pour cela, j'envoye un email à moi-même. J'ai trouvé plusieurs fonctions sur internet qui sont toutes quasiment similaires, voici l'une d'entre-elles qui a l'air très complète.
J'ai cherché partout sur internet, ainsi que sur ce forum, et en remplaçant les informations par le miennes, cela ne fonctionne toujours pas :( .
Je pense avoir utilisé le bon serveur smtp pour outlook, et le bon port pour outlook qui est 587.
J'ai correctement écrit mon email et mon mot de passe.

Mais ce message d'erreur si $ssl = 0 :
"Error code 2. Le serveur a rejeté l'adresse de l'expéditeur. La réponse du serveur était : 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM [MR2P264CA0161.FRAP264.PROD.OUTLOOK.COM]".

Et ce message d'erreur si $ssl = 1 : "Error code 2. Le transport a échoué dans sa connexion au serveur."

Pourriez-vous m'aiguiller ? :? Je vous remercie d'avance !

Voici le code, je ne pense pas pouvoir faire plus court
#include <INet.au3>
#include <File.au3>

;_______________________Variables___________________________
$SmtpServer = "smtp.office365.com"        ; address for the smtp-server to use - REQUIRED
$FromName = "xxx@outlook.fr"                 ; name from who the email was sent
$FromAddress = "xxx@outlook.fr"              ; address from where the mail should come
$ToAddress = "xxx@outlook.fr"                  ; destination address of the email - REQUIRED
$Subject = "objet"            ; subject from the email - can be anything you want it to be
$Body = ""                        ; the messagebody from the mail - can be left blank but then you get a blank mail
$AttachFiles = ""               ; the file(s) you want to attach seperated with a ; (Semicolon)
$CcAddress = ""                 ; address for cc - leave blank if not needed
$BccAddress = ""                ; address for bcc - leave blank if not needed
$Importance = "Normal"              ; Send message priority: "High", "Normal", "Low"
$Username = "xxx@outlook.fr"     ; username for the account used from where the mail gets sent - REQUIRED
$Password = "mot_de_passe"        ; password for the account used from where the mail gets sent - REQUIRED
$IPPort = 587                      ; port used for sending the mail
$ssl = 0                          ; enables/disables secure socket layer sending - put to 1 if using httpS

;_______________________Script___________________________

Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error Then
    MsgBox(0, "Error sending message", "Error code:" & @error & "  Description:" & $rc)
    ClipPut($rc)
EndIf

;_______________________UDF___________________________

Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
    Local $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    Local $i_Error = 0
    Local $i_Error_desciption = ""
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject
    If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
        $objEmail.HTMLBody = $as_Body
    Else
        $objEmail.Textbody = $as_Body & @CRLF
    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
    If Number($IPPort) = 0 then $IPPort = 25
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $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 $ssl Then
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
    $objEmail.Configuration.Fields.Update;Update settings
    Switch $s_Importance; Set Email Importance
        Case "High"
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
        Case "Normal"
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"
        Case "Low"
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"
    EndSwitch
    $objEmail.Fields.Update
    $objEmail.Send; Sent the Message
    If @error Then
        SetError(2)
        Return $oMyRet[1]
    EndIf
    $objEmail=""
EndFunc   ;==>_INetSmtpMailCom

;; Com Error Handler
Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    $oMyRet[0] = $HexNumber
    $oMyRet[1] = StringStripWS($oMyError.description, 3)
    ConsoleWrite("### COM Error !  Number: " & $HexNumber & "   ScriptLine: " & $oMyError.scriptline & "   Description:" & $oMyRet[1] & @LF)
    SetError(1); something to check for when this function returns
    Return
EndFunc   ;==>MyErrFunc

Re: envoyer un email avec outlook

Posté : ven. 11 sept. 2020 21:05
par jguinch
C'est possible que le transport utilise TLS qui, à priori n'est pas supporté par cette fonction.

Regarde ici : https://www.autoitscript.com/forum/topi ... tachments/
Ca pourrait peut-être t'aider

Re: envoyer un email avec outlook

Posté : dim. 23 janv. 2022 15:02
par Cengokill
Merci, mais malheureusement ça ne fonctionne pas.