// Récupération des emails des utilisateurs concernés
$req_email=$pdo->prepare("SELECT email FROM users WHERE (entites=? and level>=?) or admin=?");
$req_email->setFetchMode(PDO::FETCH_ASSOC);
$req_email->execute(array($entite,$level,1));
$temail=$req_email->fetchAll();
if($temail>0){
// Destinataires
$to = $temail[0]["email"];
if($temail>1) {
for ($i=1; $i<count($temail); $i++) {
$to = $to . "," . $temail[$i]["email"];
}
}
// Sujet
$subject = "Nouveau document";
// message
$message = "
<html>
<body>
<p>Vous avez un nouveau document disponible sur votre espace.</p>
<p>Vous pouvez le retrouver <a href='monsite.fr'>ici</a>. </p>
</body>
</html>
";
// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';
// En-têtes additionnels
$headers[] = 'From: monsite <no-reply.newdoc@monsite.fr>'; // Envoi
mail($to, $subject, $message, implode("\r\n", $headers));
$tMessage[0]="Document ajouté, mails envoyés";
} else
$tMessage[5]="Echec de l'envoi des mails";
N°2 :
// Récupération des emails des utilisateurs concernés
$req_email=$pdo->prepare("SELECT email FROM users WHERE (entites=? and level>=?) or admin=?");
$req_email->setFetchMode(PDO::FETCH_ASSOC);
$req_email->execute(array($entite,$level,1));
$temail=$req_email->fetchAll();
if($temail > 0) {
for ($i=0; $i<count($temail); $i++) {
// Destinataires
$to = $temail[$i]["email"];
// Sujet
$subject = "Nouveau document";
// message
$message = "
<html>
<body>
<p>Vous avez un nouveau document disponible sur votre espace.</p>
<p>Vous pouvez le retrouver <a href='monsite.fr'>ici</a>. </p>
</body>
</html>
";
// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';
// En-têtes additionnels
$headers[] = 'From: monsite <no-reply.newdoc@monsite.fr>';
// Envoi
mail($to, $subject, $message, implode("\r\n", $headers));
}
$tMessage[0]="Document ajouté, mails envoyés";
} else
$tMessage[5]="Echec de l'envoi des mails";
Le N°1, fonctionne parfaitement mais le problème c'est que lorsque l'utilisateur reçoit son mail, il peut voir aussi les adresses emails des autres utilisateurs qui ont eux aussi reçu ce mail. Ce que je ne souhaite pas.
Pour solutionner ce problème j'ai fait le code N°2, le problème de ce code est que seulement un utilisateur reçoit le mail (au lieu de 2), pourtant sur mon interface Hostinger cela m'affiche que 2 mails ont été envoyés.
Auriez-vous une solution, soit pour cacher les différents destinataires du mail (dans le cas du code N°1), ou alors que mon code envoie bien 2 mails (dans le cas du code N°2). Merci d'avance
// Récupération des emails des utilisateurs concernés
$req_email=$pdo->prepare("SELECT email FROM users WHERE (entites=? and level>=?) or admin=?");
$req_email->setFetchMode(PDO::FETCH_ASSOC);
$req_email->execute(array($entite,$level,1));
$temail=$req_email->fetchAll();
if(count($temail) > 0){
// Destinataires
$to = 'BCC: ' . $temail[0]["email"];
if(count($temail) > 1) {
for ($i=1; $i<count($temail); $i++) {
$to = $to . ", " . $temail[$i]["email"];
}
}
// Sujet
$subject = "Nouveau document";
// message
$message = "
<html>
<body>
<p>Vous avez un nouveau document disponible sur votre espace.</p>
<p>Vous pouvez le retrouver <a href='monsite.fr'>ici</a>. </p>
</body>
</html>
";
// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';
// En-têtes additionnels
$headers[] = 'From: monsite <no-reply.newdoc@monsite.fr>';
$headers[] = $to;
// Envoi
mail(null, $subject, $message, implode("\r\n", $headers));
$tMessage[0]="Document ajouté, mails envoyés";
} else
$tMessage[5]="Echec de l'envoi des mails";
Merci, ça m'envoie bien tous les mails en "anonyme", je ne connaissais pas du tout ce "BCC". Cependant quand je reçois le mail dans le "à :" il est vide, est-il possible qu'il y ai seulement l'email du destinataire dedans d'affiché et les autres cachés ? Si ce n'est pas possible, ce n'est pas grave, le principal c'est que l'on ne puisse pas voir les emails de tous les utilisateurs.
L'en-tête BCC (pour l'anglais Blind Carbon Copy, traduisible par Copie Carbone Invisible – CCI — ou parfois Copie Carbone Aveugle) sert justement à envoyer à une liste sans que ceux qui s'y trouvent ne voient les autres adresses. Mais comme il n'y a pas de "destinataire principal", rien ne s'affiche en face du champ « à ». Parfois, selon le client mail (ou peut-être selon une norme), c'est « undisclosed recipients; » qui vient se mettre, comme si c'était l'adresse de destination principale.
Par contre, la partie « via » est gérée par le client, tu ne pourras pas y faire grand chose. C'est probablement pour rassurer que cette information s'affiche.
Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.
Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).
De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.
Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.
Merci de modifier votre titre. Pour cela, éditez le premier message de votre sujet.
(titre originel : Problème fonction mail())
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Parce que je ne suis pas tombée sur le sujet avant (n'étant pas omnisciente, hélas), et que j'estime qu'il est pertinent d'avoir un titre explicite pour les futures personnes qui auraient un problème semblable.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Pas d'aide concernant le code par MP, le forum est là pour ça :)