Probleme avec la fonction mail

Mammouth du PHP | 558 Messages

30 janv. 2009, 19:49

ma newsletter atteint presque les 200 membres.
pour le moment j'utilise ceci.
<?php require("connectionbd.php");
$message = $_POST['message'];
$sujet = $_POST['sujet']; 
if($sujet != NULL AND $message != NULL)
	     {
		  $maile = mysql_query("SELECT * FROM client");
		  while($mail = mysql_fetch_array($maile))
           {
		   $toutMembre = $mail['mail']; 
		   $entete = "From: [email protected]";		  
	           mail($toutMembre, $sujet, $message, $entete);
echo"le mail a ete envoyé à $toutMembre<br>";
		   }
		   }
		   else{
		   echo'ERREUR !';
} 

?>
</td>
</tr>
</table>
mon systeme certe fonctionnelle commence à me montrer ses limites.
temps de chargement trop long chaque mail est envoyer individuellement.
j'aurais voulu savoir si il n'y avais pas la possibilité d'envoyer le mail une seul fois a tous les destinataire.
et que chacun ne vois que sa propre adresse mail.
merci

ViPHP
AB
ViPHP | 5818 Messages

30 janv. 2009, 21:21

C'est indiqué dans la fonction mail() tu peux séparer tes adresses par une virgule.

Mammouth du PHP | 558 Messages

31 janv. 2009, 17:14

Le probleme avec cette solution c'est que toutes les adresses sont afficher merci quand meme.

Eléphant du PHP | 447 Messages

31 janv. 2009, 17:26

Bonjour haka (permets que j'abrège ce pseudo frivole!)

regarde ce code qui devrait répondre à tes attentes:
<?php
     // Plusieurs destinataires
     $to  = '[email protected]' . ', '; // notez la virgule
     $to .= '[email protected]';

     // Sujet
     $subject = 'Calendrier des anniversaires pour Août';

     // message
     $message = '
     <html>
      <head>
       <title>Calendrier des anniversaires pour Août</title>
      </head>
      <body>
       <p>Voici les anniversaires à venir au mois d\'Août !</p>
       <table>
        <tr>
         <th>Personne</th><th>Jour</th><th>Mois</th><th>Année</th>
        </tr>
        <tr>
         <td>Josiane</td><td>3</td><td>Août</td><td>1970</td>
        </tr>
        <tr>
         <td>Emma</td><td>26</td><td>Août</td><td>1973</td>
        </tr>
       </table>
      </body>
     </html>
     ';

     // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
     $headers  = 'MIME-Version: 1.0' . "\r\n";
     $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

     // En-têtes additionnels
     $headers .= 'To: Mary <[email protected]>, Kelly <[email protected]>' . "\r\n";
     $headers .= 'From: Anniversaire <[email protected]>' . "\r\n";
     $headers .= 'Cc: [email protected]' . "\r\n";
     $headers .= 'Bcc: [email protected]' . "\r\n";

     // Envoi
     mail($to, $subject, $message, $headers);
?>


source: http://fr2.php.net/manual/fr/function.mail.php
Probably (only a) Human Problem?

ViPHP
ViPHP | 1380 Messages

31 janv. 2009, 17:43

Utiliser la fonction mail() pour des mail de masse n'est pas indiqué. Elle ouvre un socket par appel à la fonction 200 mails ---> 200 sockets. Il vaut bien mieux n'ouvrir qu'un socket et d'utiliser le protocole smtp pour l'envoi d'une série de mails.

Tu peux t'amuser à faire ça toi même mais tu vas vite buter sur les limites imposées par les serveurs mail. Tu devras alors commencer à gérer les code réponses etc... J'ai essayé (pour le sport), c'est possible mais pas évident. Heureusement, il y a une poire pour la soif: http://pear.php.net/package/Mail

Lis aussi cette discussion: http://www.phpfrance.com/forums/voir_re ... .php#82854
ripat

Mammouth du PHP | 558 Messages

31 janv. 2009, 18:56

c'est quoi le smtp?
j'ai été voir la discution que tu m'as proposer ainsi que le site mais je ne comprend pas la langue de sheakspeer.
j'ai voulut telecharger mais la compression en .tar n'est pas prise en charge.
merci

ViPHP
ViPHP | 1380 Messages

31 janv. 2009, 19:18

Jette un coup d'oeil ici: http://pear.php.net/manual/fr/package.mail.mail.php

Tu dois installer les paquets Mail et Net_SMTP. Si tu disposes d'un serveur dédié, c'est très facile. en ligne de commande:

Code : Tout sélectionner

# pear install Mail # pear install Net_SMTP
Sinon, il te faudra les télécharger, les décompresser et les mettre à un endroit accessibles par tes scripts, hors webroot.
http://pear.php.net/manual/fr/installat ... shared.ftp

Comme tu peux le voir dans l'exemple donné dans le post en lien, l'utilisation de la classe Mail est très simple. aussi simple que la fonction mail().

Edit:
Je viens de voir qu'il existe une interface web pour gérér les paquets Pear. Télécharge http://pear.php.net/go-pear, mets-le dans ton arborescence web, renomme le en go-pear.php et tu devrais t'en tirer (pas essayé).

Re-edit
Je viens de l'essayer. Hé, hé, pas mal! Idéal pour un mutualisé.
ripat

Eléphant du PHP | 447 Messages

31 janv. 2009, 20:35

Wow, faut te suivre ripat! :D pas évident pour les débutants que nous sommes...

néanmoins tes posts m'ont motivé à m'intéresser à pear!
Probably (only a) Human Problem?

Eléphant du PHP | 112 Messages

01 févr. 2009, 16:37

Bonjour,

J'ai plus de 200 destinataires et aucun problème avec la fonction mail: je me suis juste réservé la possibilité de choisir le nombre de destinataires, et pour faire raisonnable, 50 par 50, ça marche très bien.
Pour n'avoir qu'une adresse qui s'affiche chez le destinataire, tu peux compléter ton script d'un UPDATE dans ton while,portant une condition quelconque (ex "a_bien_recu"), en sorte qu'à chaque incrémentation, le dernier destinataire traité ne vérifie plus la condition et est exclu de la liste des destinataires.

Thierry