IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Gestion d'un fichier txt


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Par défaut Gestion d'un fichier txt
    bonjour à tous

    je suis coincé sur un problème de fichier temporaire.txt
    But du script:
    1-recevoir une liste d’émail par POST_
    2-créer un dossier temporaire
    3-Lire un paquet de 50 mails
    4-envoyer les 50 mails
    5-effacer les 50 mails envoyés de la liste
    6-prendre les 50 suivants
    7- dito jusqu’à épuisement du stock

    je reçois une liste d’émail déjà formaté avec les virgules (sauf le dernier)
    des listes de tri (cf simulation début du code)
    je crée le fichier temporaire et je charge ma liste d'émail

    après je ne sais plus comment faire pour en lire 50 les envoyer et les supprimer de la liste

    merci de me consacrer qq minutes car les mailing de nos adhérents arrivent en spam

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?php
    $_POST[email_bcc]='email1@free.fr,email2@free.fr,email3@free.fr'; //simulation des emails recus par POST_
     
    //**************************CONSTANTES de Configuration************************
     
    $paquet=50;// envoi par paquet de 50 emails
    $PAUSE=5;// Pause de 5 s entre chaque envoi
     
    //*********************Connexion à la base de données****************************
     
    include('../_admin/_connect.php');
     
    //*********************Fichier Tempraire**************************************
    unlink("temporaire.php"); // initialise le fichier pour réécrire
     
    $temporaire = fopen("temporaire.php","w"); // ouverture du fichier en écriture
     
    fputs($temporaire,$_POST[email_bcc]); //ecriture de la liste des emails dans le fichier temporaire
     
    //******************Mise du Fichier dans un tableau*****************************
    $Fichier = "temporaire.php";
     
    if (is_file($Fichier))
     {
    	if ($TabFich = file($Fichier))
    	 {
    		for($i = 0; $i < count($TabFich); $i++)
    			echo $TabFich[$i];
    	}
    	else
    	{
    		echo "Le fichier ne peut être lu...<br>";
    	}
    }
    	else
    	{
    	echo "Désolé le fichier n'est pas valide<br>";
    	}

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Pour faire plus simple j'enregistrerai les mail dans un tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab_mail = explode(",",$_POST['email_bcc']);
    que tu sérialise pour l'enregistrer dans un fichier texte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_put_contents('temporaire.txt',serialize($tab_mail));
    Ensuite tu peux récupérer le tableau du fichier texte en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $tab_mail = unserialize(file_get_contents('temporaire.txt'));
     
    //L'avantage de cette manip c'est que tu peux maintenant utiliser les fonctions sur les tableaux :
     
    $premier_cinquante = array_splice($tab_mail, 0,50);
     
    $reste_a_envoyer = $tab_mail;

  3. #3
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Par défaut
    Merci de ta réponse, c'est sympa

    cela me semble parfait
    je me penche dessus, et je reviens vers toi

    vu le nombre de neurone restant à 65 ans il me faut du temps pour que çà fasse le tour.

    Bonne soirée et encore merci

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Ah oui au fait je t'ai donné le principe pour le fichier texte mais tu ne pourras faire de pause à l'intérieur même de ton script. Il faudra utiliser une tâche programmée par le serveur (cron) pour lancer ton script toutes les 2 minutes par exemple.

    Cela te fait donc deux scripts distincts.

    Le premier pour récupérer les mail et les envoyer dans le fichiers texte (correspondant aux deux première lignes de mon code plus haut).

    Et le second script qui sera exécuter par le cron de manière automatique. En développant un peu mon dernier bloc de code cela pourrait donner quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $tab_mail = @unserialize(file_get_contents('temporaire.txt'));
     
    if(is_array($tab_mail) && count ($tab_mail) > 0)
    {
        $paquet_envoi = array_splice($tab_mail, 0,50);
     
        foreach($paquet_envoi as $value)
        {
            mail($value , $autres_parametres...);
        }
     
        file_put_contents('temporaire.txt',serialize($tab_mail));
    }

  5. #5
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Par défaut
    Bonjour,
    j’espère que ce n'est pas moi qui a perturbé ton sommeil (5h)

    le fichier est crée, mais les e mails ne sont pas enregistrés , à la place , j'ai i:0; dans le fichier

    Foreach remet l'index à 51 + 50 nouveau au deuxième tour et jusqu’à plus soif ???

    je te joins les lignes que j'ai passées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    //*********************Creation Fichier Temporaire**************************************
     
    $tab_mail='email1@free.fr,email2@free.fr,email3@free.fr'; //simulation des emails recus par POST_
     
     
    unlink("temporaire.txt"); // initialise le fichier pour réécrire
     
    $tab_mail = fopen("temporaire.txt","w"); // ouverture du fichier en écriture
     
    file_put_contents('temporaire.txt',serialize($tab_mail)); //Ouvre,Ecrit,ferme le fichier TXT en tableau la chaine $tab_mail
     
     
    $tab_mail = fopen("temporaire.txt","r"); // ouverture du fichier en lecture
    $tab_mail = @unserialize(file_get_contents('temporaire.txt'));// recuperation et lecture du fichier txt
     
    if(is_array($tab_mail) && count ($tab_mail) > 0)
    {
    	$paquet_envoi = array_splice($tab_mail, 0,50);
     
    	foreach($paquet_envoi as $value) // boucle qui envoie les paquets de 50
    	{
    		echo'$value';
    			echo'c\'est fait';  // à la place de la fonction mail pour l'instant
    	}
     }

  6. #6
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Par défaut
    re

    j'ai supprimé l'ouverture en ecriture du fichier

    donc je crée bien le fichier tx avec dedans :

    s:44:"email1@free.fr,email2@free.fr,email3@free.fr";

    je ne sais d'ou vient le s44:

    si tu passes par là pour éclairer ma lanterne

    à+

  7. #7
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    N'utilises pas fopen mais simplement file_put_contents et file_put_contents comme dans mes exemples.
    Si tu lis la doc tu constate que justement ces fonctions évitent d'avoir à utiliser fopen

    Par ailleurs comme expliqué dans mon précédent message il te faut deux fichiers distincts.

    Autre chose, tu devras te renseigner de comment programmer un cron sur ton serveur.

  8. #8
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Par défaut
    Bonjour,

    j'ai effectivement supprimé le fopen puisque file_put_contents et file_put_contents ouvre lit ou écrit et ferme le fichier voir mon message précédent
    j'ai mis les 2 fichiers bout à bout pour la lecture mais en fait j'ai fait :

    temporaire1.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // initialise le fichier pour réécrire
    unlink("temporaire.txt");
     
    //Ouvre,Ecrit,ferme le fichier TXT en tableau la chaine $tab_mail
    file_put_contents('temporaire.txt',serialize($tab_mail));
    temporaire2.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    // 1-recuperation et lecture du fichier txt
    $tab_mail = @unserialize(file_get_contents('temporaire.txt'));
    //echo $tab_mail;
     
    //2-Détermine si la variable est un tableau et si le fichier contient des emails
    if(is_array($tab_mail) && count ($tab_mail) > 0)
    {
    	$paquet_envoi = array_splice($tab_mail, 0,50);// Efface et remplace une portion de tableau= 50 emails
     	//echo $paquet_envoi;
     
    	foreach($paquet_envoi as $value) // boucle qui envoie les paquets de 50
    	{
    		echo'$value';
    			echo'c\'est fait';
    	}
     }
    ?>
    J'ai fait un essai avec $tab_mail='jeanluc.guyen.............. contenant 600 ou 800 adresses emails

    j’exécute temporaire1.php
    écriture résultat du fichier temporaire.txt :s:8639:"jeanluc.gu...............

    j’exécute tempoaire2.php
    donc phase 1 Lecture mon echo lit bien la liste d'emails
    Mais si j'ai bien compris à chaque exécution manuelle par cron les 50 emails partent et le paquet de 50 est supprimé

    Donc si j'exécute x fois le script temporaire2.php à la fin je n'ai plus rien dans la liste
    Mais là çà ne fonctionne pas la liste de départ ne bouge pas

    Cron ne fera que lancer plusieurs fois le script temporaire2.php, ce que je fais manuellement
    ai je tout compris , du moins le fonctionnement souhaité

    bonne journée

  9. #9
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Citation Envoyé par claude77 Voir le message
    Donc si j'exécute x fois le script temporaire2.php à la fin je n'ai plus rien dans la liste
    Mais là çà ne fonctionne pas la liste de départ ne bouge pas
    Ben oui elle ne bouge pas parce que tu as retiré de mon code la ligne (après l'exécution du foreach) qui la mettait à jour ! Donc forcément....

    Citation Envoyé par claude77 Voir le message
    Cron ne fera que lancer plusieurs fois le script temporaire2.php, ce que je fais manuellement
    ai je tout compris , du moins le fonctionnement souhaité
    Oui c'est ça. Il faudra juste faire attention à ce que l'intervalle de temps entre les appels successifs à ton script soit supérieur au temps d'exécution de ton script sinon tu auras des envois en double.

  10. #10
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Par défaut
    Bonjour , Merci de ta disponibilité

    je sens que l'on est au bout, mais :

    1-mon echo $paquet_envoi;//test ne retourne rien
    2-en ajoutant un else le message d'erreur s'affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // 2-Détermine si la variable est un tableau et si le fichier contient des emails
    if(is_array($tab_mail) && count ($tab_mail) > 0)
    {
    	$paquet_envoi = array_splice($tab_mail, 0,50);// Efface et remplace une portion de tableau= 50 emails
    echo $paquet_envoi;//test
     
    	foreach($paquet_envoi as $value) // boucle qui envoie chaque email jusqu'à 50
    	{
    		echo'$value';
    			echo'c\'est fait';
    	}
    	file_put_contents('temporaire.txt',serialize($tab_mail));
     
     }
    else
    {
    echo'Le fichier ne contient pas d\'emails';
    }
    3-le fichier temporaire.txt reste à s:8639:"jeanluc.guyenne@................

    qu'en passes tu ???

  11. #11
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    Bonjour Claude,

    Je n'ai pas encore pris le temps de regarder le code proposé, mais je souhaite juste te faire remarquer une chose importante concernant l'envoi de mailing.

    1/ Si tes clients reçoivent les mails en tant que spam (ou courrier indésirable dans Outlook), ça ne vient pas du nombre de destinataires. Les destinataires CCi (je suppose que c'est ton cas) sont supprimés du mail à l'envoi. Le client de messagerie ne connait même pas le nombre de destinataires.
    Donc ça vient du contenu. Le client de messagerie analyse la structure du mail et détermine si c'est du spam ou pas. Il faut leur dire de mettre ton adresse dans leurs contacts (ou liste blanche) pour éviter ca.

    2/ Par contre, si le problème est que ton adresse IP est blacklistées, saches que les systèmes de black-listage sont très malins. Envoyer des paquets de 50 ne va pas résoudre ton problème. Il faut paser par des société dont c'est le métier, connues par les systèmes de blacklistage.

    Voilà.
    A bientôt.

    Gillou.

  12. #12
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Par défaut
    merci d'avoir pris le temps de m'informer

    pourtant il n'y a rien de publicitaire dans nos mailings
    ils concernent uniquement des adhérents à qui nous envoyons la lettre du mois en pdf ou des informations d généalogie.

    quand j'envoie par paquet de 200 300 çà passe si j'envoie la totalité 900 env j'ai des problèmes.
    en fait, je voudrais automatiser de que je fais à la main

    Pourtant presque tout les script de mailing ,espaces membres, ........ ont une fonction d'envoi par paquet

    Merci encore de ton message

  13. #13
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    - Si tu veux afficher le contenu d'un tableau (sans faire de boucle pour l'afficher) il faut utiliser ... ou encore var_dump($paquet_envoi) et non pas "echo" .

    - Si tu rentre dans le esle c'est que ta première condition est fausse, c'est à dire que : if(is_array($tab_mail) && count ($tab_mail) > 0) est faux.
    Mais à propos je ne vois plus dans ton code la première ligne qui récupère le tableau ?

    EDIT : le code que je t'ai donné en exemple est épuré, réduit au strict minimum. Tu peux éventuellement le compléter (ajouter du code) suivant tes besoins, mais tu ne peux pas supprimer une ligne du code initial (sinon pour la remplacer par un code équivalent) puisqu'elles toutes sont indispensables.

  14. #14
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Par défaut
    Bonjour,

    je n'ai pas remis la phase 1 de récupération puisqu’elle fonctionne

    je récupère le fichier temporaire.txt avec:

    s:8639:"jeanluc.@..................et la suite des emails en ligne

    seule la phase 2 ne fonctionne pas

    effectivement, comme le else est mis en évidence c'est que le if ne fonctionne pas, mais pour quoi ?????
    puisqu'on récupère bien la liste d’émail en lecture de la phase 1

    bonne soirée

  15. #15
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    fichier_1.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $_POST['email_bcc'] = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z';
     
    if (isset($_POST['email_bcc']))
    {
    	$tab_mail = explode(",",$_POST['email_bcc']);
     
    	file_put_contents('temporaire.txt',serialize($tab_mail));
    }
    ?>
    fichier_2.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    $tab_mail = @unserialize(file_get_contents('temporaire.txt'));
     
    if(is_array($tab_mail) && count ($tab_mail) > 0)
    {
        $paquet_envoi = array_splice($tab_mail, 0,5);
     
        foreach($paquet_envoi as $value)
        {
            echo $value.'<br>';
        }
     
        file_put_contents('temporaire.txt',serialize($tab_mail));
    }
    ?>
    Tu recopies tel quel (sans rien changer) dans deux fichiers distincts.
    Tu lances fichier_1.php (une fois) et ensuite fichier_2.php plusieurs fois de suite. Les lettres vont s'afficher cinq par cinq (puisque j'ai défini le troisième paramètre de array_splice à 5). Chez moi ça fonctionne correctement jusqu'à épuisement de l'alphabet (contenu dans $_POST['email_bcc']).

  16. #16
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Par défaut
    merci pour ta patience

    çà fonctionne chez moi aussi, je vais adapter tes scripts pour mes emails

    Bonne soirée

    Claude

  17. #17
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Merci

    Demain j'aurai un peu plus de temps et je pourrai te montrer un petit ajout de code à faire pour que tout fonctionne correctement même si ta chaine de réception avait quelques imperfections.

  18. #18
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Par défaut
    bonjour
    j'attends avec impatience ton bout de code, car en fait c’était l'enregistrement qui était vérolé au niveau de explode j'avais une liste mais pas un tableau

    le reste fonctionne,pour confirmation les virgules ont disparues, je ne sais pas si ce sera ok dans la chaine d'envoi mail() ??

    Merci et bonne journée

  19. #19
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Bonjour,

    Tu dis que tes mails sont envoyés dans une chaine de caractères avec une virgule comme séparateur et par $_POST.

    Cette chaine pourrait comporter quelques erreurs de formatage par exemple un espace après ou avant une virgule, un retour ligne dans la chaine, deux virgules successives sans mail, ou encore un mail dont la syntaxe est non valide...

    On peut corriger cela dès la réception du post pour ainsi n'envoyer dans le fichier texte que des mails dont la syntaxe est valide.

    Par exemple
    fichier_1.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?php
    $_POST['email_bcc'] = 'a@laposte.net,b@laposte.net,c@laposte, d@laposte.net ,e@laposte.net,,f@laposte.net, g@laposte.net ,h.laposte.net,i@laposte.net , 
    j@laposte.net,k@laposte.net,l@laposte.net,m@laposte.net,n@laposte.net,o@laposte.net,p@laposte.net,q@laposte.net,r@laposte.net,s@laposte.net,t@laposte.net,u@laposte.net, v@laposte.net,w@laposte.net,x@laposte.net,y@laposte.net,z@laposte.net';
     
    if (isset($_POST['email_bcc']))
    {
    	$tab_mail = explode(",",$_POST['email_bcc']); // création d'un tableau à partir d'une chaine de caractères en prenant le caractère "," comme délimiteur
     
    	$tab_mail_non_valide = array(); //déclaration d'un tableau vide pour enregistrer les résultas
    	$tab_mail_valide = array(); //déclaration d'un tableau vide pour enregistrer les résultas
     
    	foreach ($tab_mail as $value) // on liste le tableau construit précédemment
    	{
    		$mail = trim($value); // supprime les caractères invisibles non utiles
     
    		if($mail != '') // si la valeur résultante est différente d'une chaine vide
    		{ 
    			if(filter_var($mail, FILTER_VALIDATE_EMAIL)) // retourne "vrai" (true) si syntaxe mail valide, sinon "faux" (false)
    				{
    					$tab_mail_valide[] = $mail; // enregistre les mails valides dans le tableau $tab_mail_valide
    				}
    				else
    				{
    					$tab_mail_non_valide[] = $mail; // enregistre les mails non valides dans le tableau $tab_mail_non_valide
    				}
    		}
    	}
     
    	file_put_contents('temporaire.txt',serialize($tab_mail_valide)); // enregistre le tableau sérialisé dans le fichier texte 'temporaire.txt' (car on ne peut pas enregistrer un tableau dans un fichier texte sans le sérialiser)
     
    	if (count($tab_mail_non_valide) > 0)
    	{
    		// liste les mails non valides en les séparant par une virgule et un espace
    		echo 'mail invalide : '.implode(", ",$tab_mail_non_valide);
    	}
    }
     
    ?>
    J'ai documenté le code au fil de l'eau. Tu verras que tous les mails qui peuvent être "réparés" sont récupérés. Cela te donne la liste des mail dont la syntaxe est invalide et transmet les autres dans le fichier texte.

    Testes tel quel.

    (Le fichier_2.php reste inchangé)

  20. #20
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 168
    Par défaut
    Bonjour ABCIWEB
    Merci pour ton script que je me suis empressé d’essayer

    1-)Je script fonctionne très bien sur mes 3 ou 400 mails de mon $_POST['email_bcc'] seul sort en erreur :
    mail invalide : jlfrançois2@free.fr mais je ne vois pas pourquoi ?? peut être le ç ??
    2-) temporaire2.php
    au niveau de echo $value la liste emails passe à la ligne a chaque fois qu’une adresse email contient un tiret - et il n’y a pas de virgule entre les différents emails
    mais ils partent bien ???
    (j’ai fait l’essai sur une liste réduite a 4 mail envoyés par deux)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach($paquet_envoi as $value) // boucle qui envoie chaque paquet d'email
    	{		echo $value;		
    		//mail($value,$email_exp, $email_objet, $msg);
    }
    3-)En ce qui concerne l’envoi par paquet peut être une idée idiote, faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo'<meta http-equiv="Refresh" content="2;URL=http://cg-aisne.org/temporaire2.php">';
    et une sortie après le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(is_array($tab_mail) && count ($tab_mail) > 0)
    du type
    echo'<meta http-equiv="Refresh" content="2;URL=http://cg-aisne.org">';
    qu'en penses-tu ?
    Bonne journée

Discussions similaires

  1. gestion d'un fichier txt
    Par b0ub0u dans le forum VB.NET
    Réponses: 5
    Dernier message: 05/05/2012, 16h22
  2. Réponses: 20
    Dernier message: 17/07/2009, 10h17
  3. Problème Gestion Liste et fichiers txt
    Par Freud44 dans le forum Général Java
    Réponses: 2
    Dernier message: 26/08/2008, 21h10
  4. Gestion de fichiers.txt en Transact-SQL
    Par ShaGaTsoin dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 16/09/2007, 21h29
  5. Traitement fichier .txt (gestion des '','')
    Par clemasson dans le forum Access
    Réponses: 1
    Dernier message: 11/12/2006, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo