Page 1 sur 1
[R] Envoi de mail
Posté : ven. 17 déc. 2010 21:54
par lokomass
Bonsoir à tous,
J'aimerai "tout bêtement" envoyer un mail dans mon script à moi-même.
J'ai trouvé plein d'infos sur cette méthode sur le forum, mais aucune ne fonctionne, et il y a plein de codes dans tous les sens je ne sais pas du tout lesquels sont bons, lesquels ne le sont pas :
J'ai donc repris un bout de code qui ne m'a pas l'air mal, il ne me renvoi pas d'erreurs, mais pas de mails non plus
► Afficher le texte
Code : Tout sélectionner
;====================================================== Envoi Mail Confirm =======================================================
func SendMail()
$s_SmtpServer = "smtp.orange.fr"
$s_FromName = "Lokomass"
$s_FromAddress = "xxxxxxxxx@gmail.com"
$s_ToAddress = "xxxxxxxxx@gmail.com"
$s_CcAddress = ""
$s_BccAddress = ""
$s_Username = "xxxxxxxxxx"
$s_Password = "xxxxxxxxxxx"
$IPPort = 25
$ssl = 0
$mail=""
$as_Body = $SujetMail
$s_AttachFiles = ""
$s_Subject = "Sauvegarde Terminée"
$mail=_INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body,$s_AttachFiles)
EndFunc
J'ai aussi essayé avec IPPort en 465 et SSL = 1 mais pareil, aucune réception de mails..
Pouvez-vous une fois de plus m'éclairer ???
Merci
Re: [..] Envoi de mail
Posté : ven. 17 déc. 2010 22:17
par bloodwolff
Essaie le code que j'avais posté
==>ici<== et dit moi si sa fonctionne
Re: [..] Envoi de mail
Posté : sam. 18 déc. 2010 10:31
par lokomass
Salut et merci,
Ça fonctionne impeccable, mais je veux pas toute cette interface, j'aimerais que tout se fasse automatiquement cad sans remplir les champ, l'interface etc etc...
As tu un script qui pourrais me faire ceci sans toute cette interface ???
Je te remercie en tout cas..
Re: [..] Envoi de mail
Posté : sam. 18 déc. 2010 11:21
par lokomass
Bon, je me répond tout seul, j'ai donc fait un mix entre ton code et le mien pour faire ça de manière automatique...
Voici ce que j'ai écrit, je n'ai pas d'erreur mais toujours pas de mails
Et voici le code que j'ai !
► Afficher le texte
Code : Tout sélectionner
;====================================================== Envoi Mail Confirm =======================================================
func SendMail()
$s_SmtpServer = "http://www.autoitscript.fr/smtp.php"
$s_FromName = "Lokomass"
$s_FromAddress = "xxxxxxxxxxxxxxx"
$s_ToAddress = "xxxxxxxxxxxxxxx"
$s_CcAddress = ""
$s_BccAddress = ""
$s_Username = "xxxxxxxxxxxxxxx"
$s_Password = "xxxxxxxxxxxxxxx"
$IPPort = 25
$ssl = 0
$mail=""
$as_Body = $SujetMail
$s_AttachFiles = ""
$s_Subject = "Sauvegarde Terminée"
$mail= 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)
EndFunc
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, $ssl)
$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])
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
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
$objEmail.Send
if @error then
SetError(2)
return
EndIf
EndFunc
Func MyErrFunc()
Return
EndFunc
Re: [..] Envoi de mail
Posté : sam. 18 déc. 2010 11:56
par n0way
Bonjour,
ne serais-tu pas entrain de coder un keylogger par hasard?! C'est plutôt étrange.
A bientot,
n0way
Re: [..] Envoi de mail
Posté : sam. 18 déc. 2010 12:27
par sylvanie
Bonjour,
sincèrement, je ne vois ici qu'une fonction d'envoie de mail automatisé. Ce n'est pas forcément dans un but malicieux. Bon nombre de progrmammes se servent des mails pour avertir des traîtements qu'ils ont fait (backup, check d'intégrité, administration en général ...).
@Lokomass : essayez d'utiliser l'obfuscateur de code Autoit pour cacher le mot de passe. Ce n'est pas une sécurité inviolable, mais bon ça sert de gros paillasson pour cacher la clé ...
Re: [..] Envoi de mail
Posté : sam. 18 déc. 2010 12:58
par lokomass
Bonjour,
Alors non je ne fait rien d'illégal lol, j'en ai ni l'envie ni les compétences.
J'ai tout simplement créer un petit prog qui fait mes sauvegardes PC et serveur automatiquement, et qui à la fin m'envoi un mail pour me dire qu'il a fini, et me donner le temps qu'il a mis...
Voilà.
Je veux bien utiliser ce que tu me dit Sylvanie seulement je ne sais pas cmment faire, et encore ma fonction d'envoi de mail de fonctionne toujours pas, savez-vous pourquoi ??
Merci
Re: [..] Envoi de mail
Posté : sam. 18 déc. 2010 16:58
par bloodwolff
Tu as mis
Alors que dans mon script c'était
Code : Tout sélectionner
$s_SmtpServer = _INetGetSource("http://www.autoitscript.fr/smtp.php")
Pense à rajouter l'include Inet.au3 si n'y es pas déjà

Re: [..] Envoi de mail
Posté : sam. 18 déc. 2010 20:05
par sylvanie
pour l'obscateur, il se trouve dans le répertoire d'installation d'atoit\Scite\Obfuscator\Obfuscator.exe
Lancez le, sélectionnez votre script :=> il vous génère un script équivalent mais écrit de façon difficilement visible par un humain. Ce qui cache un peu le mot de passe inclus dans le script. Cependant il existe pas mal de desassembleur procédant au reverse, d'où ma précédente remarque à ce sujet.
Re: [..] Envoi de mail
Posté : sam. 18 déc. 2010 22:20
par lokomass
Alors, merci a vous deux, mais pour le smtp, j ai aussi essayé avec mon serveur smtp orange, écrit en dur et ça ne fonctionnait pas quand même.
Le problème doit venir d'ailleurs et je ne l ai toujours pas trouvé....
Concernant le inet.au3 il est bien rajouter au début, donc pas ça non plus
Merci
Merci
Re: [..] Envoi de mail
Posté : sam. 18 déc. 2010 22:58
par sylvanie
il ne vous reste plus qu'à utiliser wireshark (ou un autre sniffer) pour logger le traffic sur le port 25 et voir les messages d'erreur du serveur...
Re: [..] Envoi de mail
Posté : dim. 19 déc. 2010 00:29
par lokomass
Aie aie aie, ça va être galère je sens...
Au niveau de mon code t a trouver aucune erreur ? Aucune anomalie ???
Parce qu'avec le code qu'on me donne plus haut, ou y a une fenêtre, on rempli les champs, ça envoi le mail et ça fonctionnait impeccable.
Depuis que j ai fait les modifs pour enlever cette fenêtre et faire tout tout seul ça marche plus. C pour ça c peut être de ma faute...
Merci
Re: [..] Envoi de mail
Posté : dim. 19 déc. 2010 01:25
par bloodwolff
$username et $pass , laisse sa vide sa sert seulement si tu utilise Gmail comme serveur smtp
Et sinon pourquoi ya plein de nouvelle variable avec des "=" dans ton appel de la fonction !
Code : Tout sélectionner
$mail= INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, "", "", "", "", "", 25, 0)
Re: [..] Envoi de mail
Posté : dim. 19 déc. 2010 11:32
par lokomass
ET voilààààà j'ai réussi grâce à vous tous, sans Wireshark (merci lol).
J'ai un peu bricoler et me suis servi de vos conseils à tous. Voici le code fonctionnel, et complet pour un envoyer un mail :
► Afficher le texte
Code : Tout sélectionner
;====================================================== Envoi Mail Confirm =======================================================
func SendMail()
$s_SmtpServer = _INetGetSource("http://www.autoitscript.fr/smtp.php")
$s_FromName = "Lokomass"
$s_FromAddress = "xxxxxxxxxxxx" ;Adresse d'envoi
$s_ToAddress = "xxxxxxxxxxxxx" ;Adresse de reception
$s_CcAddress = ""
$s_BccAddress = ""
$s_Username = "xxxxxxxxxxxxxx" ;Login du compte gmail
$s_Password = "xxxxxxxxxxxxxxx" ;Pswd du compte gmail
$IPPort = 25
$ssl = 0
$mail=""
$as_Body = $SujetMail
$s_AttachFiles = ""
$s_Subject = "Sauvegarde Terminée"
$mail= INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username ="", $s_Password="",$IPPort, $ssl)
EndFunc
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, $ssl)
$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])
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
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
$objEmail.Send
if @error then
SetError(2)
return
EndIf
EndFunc
Func MyErrFunc()
Return
EndFunc
Un grand merci encore à vous tous, pour votre aide