Page 1 sur 1
[R] Mail avec multiples destinataires
Posté : ven. 12 févr. 2010 15:42
par Apprentiweb
Bonjour à tous,
Dans le cadre du suivi d'un déploiement, j'ai besoin d'envoyer un mail à 2 adresses distinctes.
J'ai écris un code qui fonctionne avec une seule adresse
► Afficher le texte
Code : Tout sélectionner
#Include <Constants.au3>
#include <file.au3>
#include <inet.au3>
#include <Array.au3>
Dim $strComputer, $objWMIService
$strComputer = "localhost"
$objWMIService = ObjGet("winmgmts:{(RemoteShutdown)}//" & $strComputer & "\root\CIMV2")
_Read_BioS()
;~ Fonction recherchant le N° de série du poste
Func _Read_BioS()
Local $colItems = ""
$colItems = $objWMIService.ExecQuery("Select * from Win32_BIOS")
For $objItem in $colItems
Local $item = $objItem.SerialNumber
Return $Item
Next
EndFunc
; *** définition des valeurs
$date = @MDAY & "/" & @MON & "/" & @YEAR
$nommachine = @ComputerName
$adresselan = @IPAddress1
$loginuser = @UserName
$valserial = _Read_BioS()
;~ Récupération des valeurs de la passerelle et d'adresse du destinataire
$valpasserelle = IniRead(@ScriptDir & "\PARAMSUIVI.INI","PARAMETRES","Serveur","smtpgw.eiffage.loc")
$valadress = IniRead(@ScriptDir & "\PARAMSUIVI.INI","PARAMETRES","Adresse","")
;~ Création de l'objet du mail
Dim $avArray
$avArray = _ArrayCreate($date & ";" & $nommachine & ";" & $adresselan & ";" & $loginuser & ";" & $valserial)
;~ Envoi du mail
;~ **** ATTENTION il faut indiquer le nom du destinataire avant d'intégrer le code ****
_INetSmtpMail($valpasserelle,"Migration Eiffage","Migration_EiffageLoc@eiffage.com",$valadress,"Migration poste : " & $nommachine & "-" & $loginuser,$avArray)
Ensuite j'ai essayé de faire quelque chose comme ça
Code : Tout sélectionner
$valadress = $valadress & ";suivi.deploiement.dsi@eiffage.com"
Mais je ne reçois jamais le mail et je n'ai pas de message d'erreur.
Est ce que quelqu'un pourrait me donner une piste ?
Merci d'avance
Re: [..] - Mail avec multiples destinataires
Posté : ven. 12 févr. 2010 15:52
par pop45
pour contourner le probleme envoie les mail 1 par 1
Re: [..] - Mail avec multiples destinataires
Posté : ven. 12 févr. 2010 17:41
par Tlem
+1 avec pop45, car la fonction
_INetSmtpMail() ne supporte pas de multiples destinations.
A vous de faire en sorte que la fonction soit utilisée autant de fois que vous avez d'adresse de destination.

Re: [..] - Mail avec multiples destinataires
Posté : sam. 13 févr. 2010 08:25
par mimione
Bonjour
Le problème, en envoyant les mails 1 par un, c'est que l'antivirus local peut détecter une anomalie (la bloquer ou la supprimer selon son paramétrage). Par exemple, à partir de 5 adresses, Avast crie.
Par ailleurs, sur un envoi multiple, Orange (par exemple), fiche tout ça directement dans les spams... J'ai été obligé d'inscrire l'expéditeur dans ma liste verte.
Je cherche également une méthode d'envois multiples qui évite ces deux inconvénients.
Re: [..] - Mail avec multiples destinataires
Posté : sam. 13 févr. 2010 11:58
par Narmeke
Il faut faire en sorte de désactiver l'antivirus lors de l'envoie...
Cela est plus ou moins possible en ligne de commande.
En regardant le gestionnaire de tache on aperçoit dans les services :
avast! Antivirus
avast! Mail Scanner
avast! Web Scanner
J'ai voulu trouvé le processus correspondant au services et je les aient trouvé :
Pour les obtenir il suffit "afficher les processus de tous les utilisateurs :
Utilisateurs Admin (en locurence moi) :
ashDisp.exe
Utilisateurs SYSTEM :
ashMailSv.exe
ashServ.exe
ashWebSv.exe
Donc vous aurez compris il suffit d'arrêter "ashMailSv.exe" pour la réaction au niveau de l'envoie de l'email.
Je n'en dit pas plus car avec tous cela il y a de quoi faire

Re: [..] - Mail avec multiples destinataires
Posté : sam. 13 févr. 2010 13:10
par mimione
C'est quand même un truc "à la hussarde" !!!
Et si le prog est diffusé, et tourne sur une machine qui utilise un autre antivirus..?
hmmmmmmmm...?
Re: [..] - Mail avec multiples destinataires
Posté : sam. 13 févr. 2010 14:42
par Tlem
Pour envoyer un texte léger et sans pièce jointe, j'ai trouvé le code ci-dessous sur le
forum Anglais.
► Afficher le texte
Code : Tout sélectionner
Opt("MustDeclareVars", 1)
Dim $i
If _SendSMTPMail("localhost", _
"me@host.com", _
"youfirstbuddy@host.com, yoursecondbuddy@host.com, yourthirdbuddy@host.com", _
"Test email", _
"This is a test email") Then
MsgBox(0, "_SendSMTP", "Message sent!")
EndIf
Func _SendSMTPMail($sServer, $sSender, $sRecipients, $sSubject, $sBody)
Local $hSocket
Local $sData
Local $aRcptList
Local $nRcptOK = 0
Local $bSent = False
Local $n
; Start TCP services
If Not TCPStartup() Then Return False
; Connect to SMTP server
$hSocket = TCPConnect(TCPNameToIP($sServer), 25)
If $hSocket <> -1 Then
Sleep(100)
; Read 220 response from server
$sData = TCPRecv($hSocket, 1024)
If StringLeft($sData, 3) = "220" Then
Sleep(100)
$sData = "HELO " & @ComputerName & @CRLF
; Send HELO to server
If TCPSend($hSocket, $sData) > 0 Then
Sleep(100)
; Receive 250 response from server
$sData = TCPRecv($hSocket, 1024)
If StringLeft($sData, 3) = "250" Then
Sleep(100)
$sData = "MAIL FROM: <" & $sSender & ">" & @CRLF
; Send MAIL FROM command to server
If TCPSend($hSocket, $sData) > 0 Then
Sleep(100)
; Receive 250 response from server
$sData = TCPRecv($hSocket, 1024)
If StringLeft($sData, 3) = "250" Then
$aRcptList = StringSplit($sRecipients, ",")
For $n = 1 To $aRcptList[0]
Sleep(100)
$sData = "RCPT TO: <" & StringStripWS($aRcptList[$n], 8) & ">" & @CRLF
; Send RCPT TO command to server
If TCPSend($hSocket, $sData) > 0 Then
Sleep(100)
; Receive 250 response from server
$sData = TCPRecv($hSocket, 1024)
If StringLeft($sData, 3) = "250" Then $nRcptOK += 1
EndIf
Next
; Continue if at least 1 recipient was accepted
If $nRcptOK > 0 Then
Sleep(100)
$sData = "DATA" & @CRLF
; Send DATA command to server
If TCPSend($hSocket, $sData) > 0 Then
Sleep(100)
; Receive 354 response from server
$sData = TCPRecv($hSocket, 1024)
If StringLeft($sData, 3) = "354" Then
Sleep(100)
$sData = StringFormat("To: %s\r\nFrom: %s\r\n" & _
"Subject: %s\r\n" & _
"Date: %02d/%02d/%d %02d:%02d:%02d\r\n", _
$sRecipients, $sSender, $sSubject, _
@MDAY, @MON, @YEAR, @HOUR, @MIN, @SEC)
; Send message HEADER
If TCPSend($hSocket, $sData) > 0 Then
Sleep(100)
$sData = $sBody & @CRLF
; Send message BODY
If TCPSend($hSocket, $sData) > 0 Then
Sleep(100)
$sData = @CRLF & "." & @CRLF
; Send end of message indicator
If TCPSend($hSocket, $sData) > 0 Then
Sleep(100)
; Receive 250 response from server
$sData = TCPRecv($hSocket, 1024)
If StringLeft($sData, 3) = "250" Then $bSent = True
EndIf; Send end of message indicator
EndIf; Send message BODY
EndIf; Send message HEADER
EndIf; Receive 354 response from server
EndIf; Send DATA command to server
EndIf; Continue if at least 1 recipient was accepted
EndIf; Receive 250 response from server
EndIf; Send MAIL FROM command to server
EndIf; Receive 250 response from server
EndIf; Send HELO to server
EndIf; Read 220 response from server
; Close TCP socket
TCPCloseSocket($hSocket)
EndIf
; Shutdown TCP services
TCPShutdown()
Return $bSent
EndFunc
Re: [..] Mail avec multiples destinataires
Posté : mer. 17 févr. 2010 08:40
par Apprentiweb
Bonjour à tous,
J'ai trouvé un UDF permettant plus de paramètrages pour les envoi de mail
Re: [R] Mail avec multiples destinataires
Posté : mer. 17 févr. 2010 17:30
par Tlem
Vous l'avez essayé sur de multiple adresses ?