web-dev-qa-db-fra.com

Ne pas montrer d'autres destinataires lors de l'envoi de plusieurs courriels avec JMail

C'est donc mon code où j'envoie le même email à 3 utilisateurs différents

$mailer->sendMail($emailfrom, $sitename, '[email protected]', $subject, $message, 1);
$mailer->sendMail($emailfrom, $sitename, '[email protected]', $subject, $message, 1);
$mailer->sendMail($emailfrom, $sitename, '[email protected]', $subject, $message, 1);

Et c’est ce que je vois dans mon gmail (mon email est le dernier [email protected]):

enter image description here

Mais je ne veux pas que tous les destinataires successifs voient à qui l'e-mail a été envoyé auparavant. Comment peut-il être résolu? Je ne trouve rien sur la page API de JMail:

https://api.joomla.org/cms-3/classes/JMail.html

Utiliser Joomla 3.5.1

5
Adam M.

Comme vous pouvez le voir sur la page de référence de l'API, la fonction sendMail() a un paramètre $bcc:

sendMail (chaîne $ from, chaîne $ fromName, $ destinataire $, chaîne $ sujet, chaîne $ corps, booléen $ mode = faux, mixte $ cc = null, mixte $ bcc = null, mixte $ attachment = null, mixte $ replyTo = null, mixte $ replyToName = null)

En outre, si vous envoyez le même courrier électronique à 3 destinataires différents, vous n'avez pas besoin d'utiliser la fonction sendMail() 3 fois, mais définissez simplement un array de destinataires.

Essayez ce qui suit:

$to = array(
    '[email protected]'
);

$bcc = array(
    '[email protected]',
    '[email protected]'
);

$mailer->sendMail($emailfrom, $sitename, $to, $subject, $message, 1, null, $bcc);
7
Lodder

Vous pouvez essayer deux solutions parmi les suivantes.

  • En évitant l'instance de messagerie: $mailer Et en utilisant le code suivant -

JFactory::getMailer()

JFactory::getMailer()->sendMail($emailfrom, $sitename, '[email protected]', $subject, $message, 1);
JFactory::getMailer()->sendMail($emailfrom, $sitename, '[email protected]', $subject, $message, 1);
JFactory::getMailer()->sendMail($emailfrom, $sitename, '[email protected]', $subject, $message,1);`

Reportez-vous pour plus de détails:

https://developer.joomla.org/joomlacode-archive/issue-31986.html

  • Prenez un tableau de destinataires et placez l'instance de messagerie dans la boucle comme suit -

$mailer

$recipients = array('email1','email2','email3' );
for($i=0;$i<3;$i++){
    $mailer = JFactory::getMailer();
    $mailer->isHTML(true);
    $mailer->Encoding = 'base64';
    $mailer->setSubject('Your subject string');
    $mailer->setBody($body);
    $mailer->addRecipient($recipients[$i]);
    $mailer->setSender($sender);
    $send = $mailer->Send();
}

Reportez-vous pour plus de détails:

https://developer.joomla.org/joomlacode-archive/issue-29095.html

3
Liz.

Joomla Mailer étend PHPMailer, vous pouvez donc ajouter cette ligne de code après send ()

$mailer->clearAllRecipients();
0
Stergios Zg.