[RESOLU] PHP Mailer

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] PHP Mailer

Re: [RESOLU] PHP Mailer

par antidote75 » 09 nov. 2014, 00:39

Merci, effectivement j'ai mis en copie cachée.

Je vais voir cette fonction clear

Bon dimanche

Hervé

Re: [RESOLU] PHP Mailer

par Spols » 08 nov. 2014, 21:57

Il ya 2 solutions pour envoyer un mail sans que tous les récepteurs connaissent les autres récepteurs.

soit tu utilise la fonction CCi (copie conforme invisible) et donc personnes ne voit la liste des adresses
soit tu envoi un mail à chaque itération, il y a des fonction dans phpmailer clearTo() si je me rappelle bien pour supprimer les adresses a chaque itération

Re: PHP Mailer

par antidote75 » 08 nov. 2014, 17:41

Merci beaucoup Netescha pour ces explications très clairs :D

Re: PHP Mailer

par Nestecha » 08 nov. 2014, 15:47

C'est parce qu'avec PHPMailer, $mail est un objet qui contient plusieurs choses, dont une ou plusieurs adresses.
Donc lors d'un envoi, on envoi qu'avec un seul objet mail qui enverra a toutes les adresses donc tout le monde verra chaque autre adresse.

Avec mail(), on envoi qu'à une adresse, et l'adresse change à chaque envoi. Donc chaque mail n'a aucun rapport avec l'ancien.

Re: PHP Mailer

par antidote75 » 08 nov. 2014, 11:07

Merci beaucoup cela est mieux chaque personne cochée ne reçoit qu'un mail :D

Ce que je ne comprends pas c'est quand je faisais :
// Pour finir, on envoie l'e-mail
   foreach ($selection as $choix)
			{
			mail($choix, $sujet, $msg, "Reply-to: $expediteur\r\nFrom: $expediteur\r\n".$header);
				
			}
Cela marchait

Le problème avec PHPMailer c'est que tous les destinataires apparaissent ce que je ne veux pas !!! alors qu'avec Mail uniquement le destinataire apparait

Bon WE

Re: PHP Mailer

par Nestecha » 08 nov. 2014, 03:03

Petite coquille sur l'explication du pourquoi le foreach ne fonctionne pas.

En fait c'est simplement que lors du premier passage l'adresse 1 est ajoutée et un mail est envoyé. Passage 2, adresse 1 toujours dans la liste et mail envoyé à nouveau (à l'adresse 1 puis 2). Donc l'adresse 1 recevra autant de mails qu'il y a d'adresses, l'adresse 2 en recevra 1 de moi, puisqu'elle n'existait pas dans la liste des mails lors du premier passage, et donc du premier envoi.

Re: PHP Mailer

par Nestecha » 08 nov. 2014, 02:57

Oui sûrement dans le foreach.

En fait dans ton foreach là, tu dis : "pour chaque adresse cochée, ajoute cette adresse dans la liste des adresses à ajouter (jusqu'ici tout va bien), puis envoi un mail à toutes les adresses cochées jusqu'ici (pas bon !)".

Enfin je crois, je ne connais pas bien PHPMailer, mais j'imagine que $mail c'est un objet qui va contenir la ou les adresses. Donc tu ajoutes les adresses, puis en dehors du foreach tu fais un send, et ça devrait envoyer à toutes les adresses d'un coup, mais une seule fois !

Donc c'est normal qu'il en envoi 100 au premier, puisqu'il reste 99 + l'adresse du premier par lesquelles il boucle. Lors du deuxième passage il n'en reste que 98 + l'adresse du second (la première est terminée).

Donc voilà ton code comme il devrait être (selon moi) :
<?php

// On va chercher la définition de la classe
require('../PHPMailer/class.phpmailer.php');

// On créé une nouvelle instance de la classe
$mail = new PHPMailer();

require ("../Connexion/config.php");

$expediteur   = "[email protected]";



if(isset($_POST['envoi']))
{

    $sujet=stripslashes($_POST["sujet"]);

    $corps = stripslashes($_POST["corps"]);

    $selection=$_POST["selection"];

    if (empty($_POST["selection"]))

    {
        echo "<h3 align=center><strong>Vous devez remplir toutes les cases</h3>";

        echo "<p align=center><a href=javascript&#058;history.back(-1)>Retourner sur la Page Message</a></p>";
    }

    else
    {

        //$fichier = $_FILES['fichier_joint']['name'];  

        //echo "$fichier";      

        echo "test";

        // De qui vient le message, e-mail puis nom

        $mail->From = $expediteur;
        $mail->FromName = "Herve Dunoyer";

        // Définition du sujet/objet

        $mail->Subject = $sujet;

        // On définit le corps du message
        $mail->Body = $corps;


        // On met notre CV en pièce jointe
        //$mail->AddAttachment('Compo_Sacs.jpg');

        // Pour finir, on envoie l'e-mail
        foreach ($selection as $choix)
        {
            //              mail($choix, $sujet, $msg, "Reply-to: $expediteur\r\nFrom: $expediteur\r\n".$header);
            // Il reste encore à ajouter au moins un destinataire
            $mail->AddAddress($choix, "HeyHo");
            // Pour finir, on envoie l'e-mail
            
        }
        $mail->send();

        echo "<h3 align=center><strong>Votre Newsletter a bien été envoyée</h3>";
        echo '<p align="center"><a href="javascript&#058;history.back(-1)">Retourner sur la Page Message</a></p>';

    }


//Fin POST                      
}

PHP Mailer

par antidote75 » 07 nov. 2014, 21:04

Bonsoir

Je suis en train de programmer un mailing pour démarcher des agences.

J'utilisais un code trouvé sur le net qui semblait fonctionner

J'ai vu qu'il existait une classe PHPMailer qui semblait simple.

Dans ma page d'envoi je récupère un sujet , un message et une liste d'agents (ceux qui ont été cochés) et je lance le mailing sur 100 agents et là patatras le premier de la liste reçoit 100 messages, le second 99 et ainsi de suite et en plus chaque agent est listé comme destinataire
<?php
 
   // On va chercher la définition de la classe
   require('../PHPMailer/class.phpmailer.php');
 
   // On créé une nouvelle instance de la classe
   $mail = new PHPMailer();
   
   require ("../Connexion/config.php");	

   $expediteur   = "[email protected]"; 
   
  
   
   if(isset($_POST['envoi']))  
	 {
	 
	$sujet=stripslashes($_POST["sujet"]);	
		
	$corps = stripslashes($_POST["corps"]); 

	$selection=$_POST["selection"];	

	if (empty($_POST["selection"])) 
	
		{
		echo "<h3 align=center><strong>Vous devez remplir toutes les cases</h3>";	
		
	    echo "<p align=center><a href=javascript:history.back(-1)>Retourner sur la Page Message</a></p>"; 
		}	
		
		else
		{
			
	//$fichier = $_FILES['fichier_joint']['name'];	
	
	//echo "$fichier";	
	
	echo "test";
	
	// De qui vient le message, e-mail puis nom
   
    $mail->From = $expediteur;
   $mail->FromName = "Herve Dunoyer";
 
   // Définition du sujet/objet
   
   $mail->Subject = $sujet;
 
   // On définit le corps du message
   $mail->Body = $corps;
 
    
   // On met notre CV en pièce jointe
   //$mail->AddAttachment('Compo_Sacs.jpg');
 
   // Pour finir, on envoie l'e-mail
   foreach ($selection as $choix)
			{
	//		mail($choix, $sujet, $msg, "Reply-to: $expediteur\r\nFrom: $expediteur\r\n".$header);
	// Il reste encore à ajouter au moins un destinataire
	$mail->AddAddress($choix, "HeyHo");
	// Pour finir, on envoie l'e-mail
   $mail->send();
	
			
			}
   
   echo "<h3 align=center><strong>Votre Newsletter a bien été envoyée</h3>";	
	echo '<p align="center"><a href="javascript:history.back(-1)">Retourner sur la Page Message</a></p>'; 	
   
	}
		
 
//Fin POST 			
  }
Comme vous le voyez à la fin du code avant j'utilisais :

mail($choix, $sujet, $msg, "Reply-to: $expediteur\r\nFrom: $expediteur\r\n".$header);

Et cela fonctionnait !!!

Pouvez vous me dire où j'ai merdé, dans le foreach je suppose

Merci par avance