Extraction d'adresse mail d'un fichier .txt puis faire une copie sur un fichier .txt (recup)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Sharki
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mar. 11 août 2020 13:26
Status : Hors ligne

Extraction d'adresse mail d'un fichier .txt puis faire une copie sur un fichier .txt (recup)

#1

Message par Sharki »

Bonjour à tous et à toutes,

Comme indiqué sur ma présentation je suis un néophyte en terme de programmation.
Certes où je travail (salle de réalité virtuelle) nous faisons appel parfois à un informaticien mais chaque intervention bloque notre activité pendant quelques temps.

Je viens vers vous aujourd'hui car nous envoyons des fichiers (photos de fin de session ainsi qu'un message post séance) à nos clients. Le problème c'est que nous n'arrivons plus à récupérer les adresses mails à partir du fichier .txt. Les mails partent mais l'extraction des adresses ne se fait plus...

Fichier .txt des joueurs
Mission2
1;Sharki;XXX@XXX.fr
2;Alex;YYY@YYY.fr
3;Name;
4;Name;
Partie du script
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
If @error Then
    MsgBox(0, "Error sending message", "Error code:" & @error & "  Rc:" & $rc)
EndIf
   $rc = _INetSmtpMailCom($FileList, $s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
    ;Send("^v") ;On la colle
    ;Send("{ENTER}");On entre l'adresse
 Next
EndIf

Func _INetSmtpMailCom($FileList, $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)
    $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 = 1 Then
        For $x = 1 To $FileList[0]
            $FileList[$x] = _PathFull ($FileList[$x])
            If FileExists($FileList[$x]) Then
                $objEmail.AddAttachment ($FileList[$x])
            Else
                $i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $FileList[$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
;
;
; 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

$stock = FileOpen ("recup.txt", 0)
$CheminStock = FileOpen(@DesktopDir & "\Stockage_email.txt", 1)

While 1
    $line = FileReadLine($stock)
    If @error = -1 Then ExitLoop
    If StringInStr($line, $mot, 0) Then FileWriteLine($CheminStock, $line)
   Wend

   MsgBox (1, "Mail parti!", "Les mail sont parti! checkez tout de même la boite mail au cas ou on sait jamais")
En espérant avoir était le plus clair possible.
Merci par avance pour toutes l'aides que vous pourrez me donner.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11572
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Extraction d'adresse mail d'un fichier .txt puis faire une copie sur un fichier .txt (recup)

#2

Message par Tlem »

Bonsoir Alex.
Avant de pouvoir répondre correctement à votre question, il faudrait déjà éclaircir certains points !

Votre fichier texte est-il toujours de la même forme ?
Est-ce qu'il peux y avoir plusieurs adresses mail ? Si oui jusqu'à combien ?
Devez-vous envoyer le mail à toutes les adresses indiquées dans le fichier texte ?
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Sharki
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mar. 11 août 2020 13:26
Status : Hors ligne

Re: Extraction d'adresse mail d'un fichier .txt puis faire une copie sur un fichier .txt (recup)

#3

Message par Sharki »

Bonsoir Tlem,
Oui en effet j'ai omis certains petits détails désolé d'ailleurs...

Pour répondre à vos questions.

- Oui en effet toujours de la même forme.
- Il peut y avoir de 2 jusqu'à 4 adresses mails par dossier.
- Je dois en effet envoyer le même mail avec les photos à chaques adresses mails présentent par dossier.

Toutes les adresses mails contenues dans chaques dossiers devra être copié dans un fichier de récupération de données clients (pour nos futurs ccampagnes comme pub, avis....)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11572
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Extraction d'adresse mail d'un fichier .txt puis faire une copie sur un fichier .txt (recup)  

#4

Message par Tlem »

Voici un code qui devrait vous aider. Il faut l'adapter et le compléter.
Il vous permettra de récupérer toutes les adresses email du fichier (qu'il y en ait 1, 2, 4 ou plus).

Code : Tout sélectionner

Global $sEmailFile = FileRead("Stockage_email.txt")
If @error Then
	MsgBox(16, "Erreur", "Erreur de lecture du fichier Stockage_email.txt")
	Exit
EndIf

; Ici on triture le contenu du fichier texte pour obtenir un tableau avec toutes les adresses email trouvées.
Global $aEmail = StringRegExp($sEmailFile,";([-.\w]+@[-.\w]+\.[\w]{2,4})",3)

; Ici on lit le tableau ligne par ligne.
For $i = 0 To UBound($aEmail) - 1
	; C'est ici qu'il faut mettre l'appel à la fonction d'envoi par mail - INetSmtpMailCom(......)
	ConsoleWrite("Email N° " & $i + 1 & " ---> " & $aEmail[$i] & @CRLF) ; Cette ligne écrit les adresses email dans la console juste pour vous montrer
Next

Exit
; Ici c'est la fin du code principal du script

; ===============================================
; C'est ici que vous devez mettre vos fonctions :
Func Fonction1()
	;....
EndFunc

Func Fonction2()
	;....
EndFunc
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Sharki
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mar. 11 août 2020 13:26
Status : Hors ligne

Re: Extraction d'adresse mail d'un fichier .txt puis faire une copie sur un fichier .txt (recup)

#5

Message par Sharki »

Merci Tlem.
Répondre