[R] L'envoi de Mail

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

[R] L'envoi de Mail

#1

Message par amouna98 »

bonjour

dans le but d'envoyer un mail avec autoit j'ai testé plusieur code par exemple

Code : Tout sélectionner

#include <INet.au3>

$s_SmtpServer = "smtp.gmail.com"
$s_FromName = "user"
$s_FromAddress = "user@gmail.com"
$s_ToAddress = "user@gmail.com"
$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
 
mais il me retourne le code erreur 50
!!!
Fichiers joints
err.JPG
err.JPG (4.62 Kio) Vu 9186 fois
Modifié en dernier par amouna98 le ven. 20 août 2010 10:08, modifié 3 fois.
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..]l'envoie de mail

#2

Message par amouna98 »

jai aussi testé ce code trouver sur le forum

Code : Tout sélectionner

 $as_Body = "IP LAN : " & @IPAddress1 & @CRLF
    $s_SmtpServer = "smtp.gmail.com" ; Serveur SMTP
    $s_FromName = "user" ; Nom expéditeur
    $s_FromAddress = "user@gmail.com" ; Mail expéditeur
    $s_ToAddress = "user@gmail.com" ; Destinataire
$s_Subject="lol"
    $s_AttachFiles = "" ; Pièce jointe (à laisser vide si pas de PJ)
    $s_CcAddress = "" ; Mail de copie (à laisser vide si non nécessaire)
    $s_BccAddress = "" ; Mail de copie invisible (à laisser vide si non nécessaire)
    $s_Username = "user" ; Login compte mail
    $s_Password = "pass"  ; Mot de passe mail
    $IPPort = 465 ; Port SMTP
    $ssl = 1 ; Mettre 1 si envoi en SSL, sinon 0

    Global $oMyRet[2]
    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

    $rc = _INetSmtpMail($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
 
mais le ipport n est pas bon, j ai gardé celui de l'exemple car je sais pas comment puis je le chercher sur ma machine !
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..]l'envoie de mail

#3

Message par amouna98 »

ca et cest tres complet http://www.autoitscript.fr/forum/viewto ... f=6&t=3917

Code : Tout sélectionner


#Include <File.au3>

$s_SmtpServer="smtp.gmail.com"
$s_FromName="your name"
$s_FromAddress="xxx@gmail.com"
$s_ToAddress="xxx@varian.com"
$s_Subject = "test"
$as_Body = "coucouricou"
$s_AttachFiles = ""
$s_CcAddress = ""
$s_BccAddress = ""
$s_Username = "xxx"
$s_Password = "xxx"
$IPPort = 465
$ssl = 1
_INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body , $s_AttachFiles , $s_CcAddress, $s_BccAddress, $s_Importance, $s_Username, $s_Password , $IPPort , $ssl)

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
    If $s_AttachFiles <> "" Then
        Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
        For $x = 1 To $S_Files2Attach[0]
            $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
            ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
            If FileExists($S_Files2Attach[$x]) Then
                $objEmail.AddAttachment ($S_Files2Attach[$x])
            Else
                ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
                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
    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
    ;Update settings
    $objEmail.Configuration.Fields.Update
    ; Set Email Importance
    $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
    $objEmail.Fields.Update
    ; Sent the Message
    $objEmail.Send
    If @error Then
        SetError(2)
        Return $oMyRet[1]
    EndIf
    $objEmail=""
EndFunc   ;==>_INetSmtpMailCom
 
et ca c'est le stricte minimum :)
parcontre j'arrive pas a lutiliser avec un autre SMTP serveur que gmail !! est ce que c'est normal
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..] L'envoi de Mail

#4

Message par amouna98 »

je veux utiliser un autre serveur mail mais ca march pas auriez vous une idée pourquoi
Sh4dows
Status : Hors ligne

Re: [..] L'envoi de Mail

#5

Message par Sh4dows »

Le sujet est traité des millions de fois !
Il faut que tu utilises ton serveur SMTP et non GMAIL !

Edit :
Arrête de flooder, pour trouver ton SMTP

Code : Tout sélectionner

$SMTP =_INetGetSource("http://www.autoitscript.fr/smtp.php")
MsgBox( 0, "Search SMTP Serveur", "Votre serveur SMTP est : "&$SMTP)
 
Sinon Systeme automatique, pour cela tu donne a ta variable "$s_SmtpServer" la valeur que retourne "_INetGetSource()" Soit dans votre cas :

Code : Tout sélectionner

$s_SmtpServer = _INetGetSource("http://www.autoitscript.fr/smtp.php")
 
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..] L'envoi de Mail

#6

Message par amouna98 »

Sh4dows a écrit :Le sujet est traité des millions de fois !
Il faut que tu utilises ton serveur SMTP et non GMAIL !

Edit :
Arrête de flooder, pour trouver ton SMTP

Code : Tout sélectionner

$SMTP =_INetGetSource("http://www.autoitscript.fr/smtp.php")
MsgBox( 0, "Search SMTP Serveur", "Votre serveur SMTP est : "&$SMTP)
 
Sinon Systeme automatique, pour cela tu donne a ta variable "$s_SmtpServer" la valeur que retourne "_INetGetSource()" Soit dans votre cas :

Code : Tout sélectionner

$s_SmtpServer = _INetGetSource("http://www.autoitscript.fr/smtp.php")
 
bien sur que j ai changé mes variables et biensur le smtp serveur mais j ai cette erreur
$objEmail.Send
$objEmail.Send^ ERROR
Sh4dows
Status : Hors ligne

Re: [..] L'envoi de Mail

#7

Message par Sh4dows »

Il ne manquerait pas l'include :

Code : Tout sélectionner

 #include <INet.au3>
Par Hasard ?
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..] L'envoi de Mail

#8

Message par amouna98 »

Sh4dows a écrit :Il ne manquerait pas l'include :

Code : Tout sélectionner

 #include <INet.au3>
Par Hasard ?
NON je l ai ajouté :wink:
mais je pense que ca vient d une de ces lignes

Code : Tout sélectionner

$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
 
je pense que ca ne marche qu'avec gmail

en plus moi je serai interessé par lutilisation du blat plus qu autre chose
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 411
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: [..] L'envoi de Mail

#9

Message par jl56 »

bonjour

J'utilise également ce code sans aucun problème

sauf un
le code doit être compilé en fonction du system utilisé ( system 64 bit= compile en 64 bit)

si vous utiliser le smtp de votre FAI en général le port =25 donc pas de ssl ,$ipport=25 et $ssl=0

A+ JL56
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..] L'envoi de Mail

#10

Message par amouna98 »

jl56 a écrit :bonjour

J'utilise également ce code sans aucun problème

sauf un
le code doit être compilé en fonction du system utilisé ( system 64 bit= compile en 64 bit)

si vous utiliser le smtp de votre FAI en général le port =25 donc pas de ssl ,$ipport=25 et $ssl=0

A+ JL56
est ce que tu utilise le serveur gmail ou autre car avec gmail moi aussi j ai pas de probleme
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..] L'envoi de Mail

#11

Message par amouna98 »

mon probleme cest que il me faut un code independant du serveur smtp utilisé
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] L'envoi de Mail

#12

Message par SrBelial »

en ce cas une solution relativement simple à mettre en oeuvre (bien que peu optimisée) :

tu envoie le mail avec un smtp courant (smtp.wanadoo.fr par exemple)
si erreur tu recommence : renvoie le même mail avec un autre smtp (smtp.yahoo.fr)
si erreur tu recommence : renvoie le même mail avec encore un autre (smtp.gmail.fr)
si erreur ... etc ...

si vraiment ça marche avec aucun serveur smtp, à la dernière erreur, par dépit tu ouvre une inputbox pour demander le smtp à l'utilisateur, et tu retente une dernière fois avec le smtp qu'il a entré ....

=============================================================
sinon y a plus lourd encore :

tu récupère l'adresse ip publique de la machine sur laquelle tourne le script, tu cherche à quel FAI elle appartient,
tu teste avec le smtp de ce FAI ...

==============================================================
un peu moins lourd mais complètement hors de propos :

ton script autoit appelle un script php ...
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..] L'envoi de Mail

#13

Message par amouna98 »

SrBelial a écrit :en ce cas une solution relativement simple à mettre en oeuvre (bien que peu optimisée) :

tu envoie le mail avec un smtp courant (smtp.wanadoo.fr par exemple)
si erreur tu recommence : renvoie le même mail avec un autre smtp (smtp.yahoo.fr)
si erreur tu recommence : renvoie le même mail avec encore un autre (smtp.gmail.fr)
si erreur ... etc ...

si vraiment ça marche avec aucun serveur smtp, à la dernière erreur, par dépit tu ouvre une inputbox pour demander le smtp à l'utilisateur, et tu retente une dernière fois avec le smtp qu'il a entré ....

=============================================================
sinon y a plus lourd encore :

tu récupère l'adresse ip publique de la machine sur laquelle tourne le script, tu cherche à quel FAI elle appartient,
tu teste avec le smtp de ce FAI ...

==============================================================
un peu moins lourd mais complètement hors de propos :

ton script autoit appelle un script php ...
c est une solution et en plus ça marche très bien avec gmail mais je suis obliger d utilisé un compte gmail (mon chef veux pas ça !!!)
il dit que c est pas sécurisé et en plus il y a des clients qui n en ont pas accès

en plus mon chef veux que chaqu un de nos client rentre le serveur mail et le mail d envoie ainsi que le mail vers le quel il faut envoyer et il vaux que sa soit indépendant du code sauf que c est un casse tête et je voix pas comment faire :?: :( :!: heeeeeeeeeeeeeeeelp
En 1er lieu je veux essayé d envoyé le mail avec mon compte du boulo si j y arrive je négocierai le reste :)
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..] L'envoi de Mail

#14

Message par amouna98 »

il y a des cilents qui ont des serveur exchange et ca c pas top :?
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] L'envoi de Mail

#15

Message par SrBelial »

bah dis à ton chef que il peut toujours dire "il faut ... il faut" mais que si t'es bloquée soit il revoit ses exigences à la baisse soit il embauche un spécialiste des mails .... ^___^
sinon à trop en vouloir il aura jamais ce qu'il veut !

j'essaierai dans le week end de faire un truc générique, paramétrable et qui marche ...
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Sh4dows
Status : Hors ligne

Re: [..] L'envoi de Mail

#16

Message par Sh4dows »

Il y a plus simple pour envoyé un mail et en moins de ligne en plus ^^

Code : Tout sélectionner

#include <INet.au3>
SENDFILE() ; Appelle de la fonction.
Func SENDFILE()
   $SH4_SMTPSERVER = _INetGetSource("http://www.autoitscript.fr/smtp.php") ;SMTP Automatique
   $SH4_FROMNAME = "Sh4dows" ; Nom de l'expéditeur
   $SH4_FROMADDRESS = "sh4dows@live.fr" ; Mail de l'expéditeur
   $SH4_TOADDRESS = "exemple@gmail.fr" ; Mail du destinataire
   Dim $ASQ_BODY[2]
   $SH4_SUBJECT = "Sujet" ; Sujet du mail
   $ASQ_BODY[0] = "Text" ;Contenu du mail
   $RESPONSE = _INetSmtpMail($SH4_SMTPSERVER, $SH4_FROMNAME, $SH4_FROMADDRESS, $SH4_TOADDRESS, $SH4_SUBJECT, $ASQ_BODY)
EndFunc
 
Le code n'est pas de moi, je n'en connais pas les origines exact...
Il peut être énormément modifier !
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..] L'envoi de Mail

#17

Message par amouna98 »

Sh4dows a écrit :Il y a plus simple pour envoyé un mail et en moins de ligne en plus ^^

Code : Tout sélectionner

#include <INet.au3>
SENDFILE() ; Appelle de la fonction.
Func SENDFILE()
   $SH4_SMTPSERVER = _INetGetSource("http://www.autoitscript.fr/smtp.php") ;SMTP Automatique
   $SH4_FROMNAME = "Sh4dows" ; Nom de l'expéditeur
   $SH4_FROMADDRESS = "sh4dows@live.fr" ; Mail de l'expéditeur
   $SH4_TOADDRESS = "exemple@gmail.fr" ; Mail du destinataire
   Dim $ASQ_BODY[2]
   $SH4_SUBJECT = "Sujet" ; Sujet du mail
   $ASQ_BODY[0] = "Text" ;Contenu du mail
   $RESPONSE = _INetSmtpMail($SH4_SMTPSERVER, $SH4_FROMNAME, $SH4_FROMADDRESS, $SH4_TOADDRESS, $SH4_SUBJECT, $ASQ_BODY)
EndFunc
 
Le code n'est pas de moi, je n'en connais pas les origines exact...
Il peut être énormément modifier !
oui j ai deja vue ce code la mais j ai pas pu l utilisé je sais pas trop pourquoi ca marche pas nisi je dois changer la ligne : $SH4_SMTPSERVER = _INetGetSource("http://www.autoitscript.fr/smtp.php") ;SMTP Automatique
si oui qu'est ce que je dois y metre !!!!
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..] L'envoi de Mail

#18

Message par amouna98 »

SrBelial a écrit :bah dis à ton chef que il peut toujours dire "il faut ... il faut" mais que si t'es bloquée soit il revoit ses exigences à la baisse soit il embauche un spécialiste des mails .... ^___^
sinon à trop en vouloir il aura jamais ce qu'il veut !

j'essaierai dans le week end de faire un truc générique, paramétrable et qui marche ...
de ce coté la il est un tres bon chef hhhh
la piste que je regarde mtn cest l utilisation du blat instalé avec sybase (mais en dos) ca le fait avec le serveur wanadoo mais pas avec gmail ! je voix pas trop pourqoui mais je cherche tjr :)
Sh4dows
Status : Hors ligne

Re: [..] L'envoi de Mail

#19

Message par Sh4dows »

amouna98 a écrit :
Sh4dows a écrit :Il y a plus simple pour envoyé un mail et en moins de ligne en plus ^^

Code : Tout sélectionner

#include <INet.au3>
SENDFILE() ; Appelle de la fonction.
Func SENDFILE()
   $SH4_SMTPSERVER = _INetGetSource("http://www.autoitscript.fr/smtp.php") ;SMTP Automatique
   $SH4_FROMNAME = "Sh4dows" ; Nom de l'expéditeur
   $SH4_FROMADDRESS = "sh4dows@live.fr" ; Mail de l'expéditeur
   $SH4_TOADDRESS = "exemple@gmail.fr" ; Mail du destinataire
   Dim $ASQ_BODY[2]
   $SH4_SUBJECT = "Sujet" ; Sujet du mail
   $ASQ_BODY[0] = "Text" ;Contenu du mail
   $RESPONSE = _INetSmtpMail($SH4_SMTPSERVER, $SH4_FROMNAME, $SH4_FROMADDRESS, $SH4_TOADDRESS, $SH4_SUBJECT, $ASQ_BODY)
EndFunc
 
Le code n'est pas de moi, je n'en connais pas les origines exact...
Il peut être énormément modifier !
oui j ai deja vue ce code la mais j ai pas pu l utilisé je sais pas trop pourquoi ca marche pas nisi je dois changer la ligne : $SH4_SMTPSERVER = _INetGetSource("http://www.autoitscript.fr/smtp.php") ;SMTP Automatique
si oui qu'est ce que je dois y metre !!!!
Tu laisse tel quel, le code fonctionne mais la réception du mail est longue, je ne sais pas trop pourquoi mais le mail arrive après plusieurs minutes voir même plusieurs heures...
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..] L'envoi de Mail

#20

Message par amouna98 »

mais ca peut pas marché _INetSmtpMail me retourn un 0 !!! normalment il y a erreur mais erreur=0
je trouve pas ca logique!!!
Répondre