Envoyer un e-mail avec AutoIt
Comment envoyer un e-mail avec AutoIt? Juste besoin d'un exemple propre et de l'explication, contenant:
- sujet
- message
3 réponses
il y a deux principales façons d'utiliser le code intégré, _INetMail() ou _INetSmtpMail()
ci-dessous sont les exemples de code simples du fichier d'aide. Si vous avez des questions spécifiques sur la façon dont ils fonctionnent ou comment les mettre en œuvre non couverts par le fichier d'aide s'il vous plaît laisser un commentaire.
à mon avis, La route _INetSmtpMail() est plus raisonnable. Ci-dessous est un exemple de code.
#include <INet.au3>
$s_SmtpServer = "mysmtpserver.com.au"
$s_FromName = "My Name"
$s_FromAddress = "From eMail Address"
$s_ToAddress = "To eMail Address"
$s_Subject = "My Test UDF"
Dim $as_Body[2]
$as_Body[0] = "Testing the new email udf"
$as_Body[1] = "Second Line"
$Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body)
$err = @error
If $Response = 1 Then
MsgBox(0, "Success!", "Mail sent")
Else
MsgBox(0, "Error!", "Mail failed with error code " & $err)
EndIf
la méthode _INetMail() utilisant le client mail intégré enregistré avec windows.
#include <INet.au3>
$Address = InputBox('Address', 'Enter the E-Mail address to send message to')
$Subject = InputBox('Subject', 'Enter a subject for the E-Mail')
$Body = InputBox('Body', 'Enter the body (message) of the E-Mail')
MsgBox(0,'E-Mail has been opened','The E-Mail has been opened and process identifier for the E-Mail client is ' & _INetMail($address, $subject, $body))
si vous souhaitez envoyer un e-mail avec AutoIt, vous devez choisir la méthode Microsoft CDO. N'utilisez pas l'automatisation du courrier des clients (Outlook, Thunderbird ou autre). Le principal avantage de CDO, c'est qu'il ne dépend pas du programme de courrier client que vous utilisez. Cela dépend uniquement du serveur SMTP.
Vous pouvez utiliser la fonction _INetSmtpMail en librairie AutoIt Inet.au3. Mais si vous voulez maîtriser toute chose, vous pouvez utiliser cette fonction définie par l'utilisateur _INetSmtpMail ci-dessous :
fichier Autoit UDF: UDF_SMTP_eMail.au3
;==============================================================================================================
; Description : Send an email with a SMTP server by Microsoft CDO technology
; Parametere : $s_SmtpServer
; $s_FromName
; $s_FromAddress
; $s_ToAddress
; $s_Subject
; $as_Body
; $s_AttachFiles (path file to join)
; $s_CcAddress
; $s_BccAddress
; $s_Username
; $s_Password
; $IPPort
; $ssl
; Return : On success none
; On error code+msg
;==============================================================================================================
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Username = "", $s_Password = "",$IPPort=25, $ssl=0)
Local $objEmail = ObjCreate("CDO.Message")
Local $i_Error = 0
Local $i_Error_desciption = ""
$objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
$objEmail.To = $s_ToAddress
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
If $s_AttachFiles <> "" Then
Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
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") = $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
;Update settings
$objEmail.Configuration.Fields.Update
; Sent the Message
$objEmail.Send
if @error then
SetError(2)
return $oMyRet[1]
EndIf
EndFunc ;==>_INetSmtpMailCom
;===========================================================================================================
Voici une variante de ce que Copas décrit. Doit envoyer automatiquement pour vous
#include <INet.au3>
$time1 = _NowTime()
$Address = "" ;To Address
$Subject = ""
$Body = ""
_INetMail($address, $subject, $body)
Local $hWnd = WinWait("[CLASS:rctrl_renwnd32]", "", 2) ;Works with Outlook 2013. Class might vary. Use the info tool to be sure. Eg I seriously doubt it will be the same with something like thunderbird.
ControlClick($hWnd, "", "Button1")