web-dev-qa-db-ja.com

JMailで複数のメールを送信するときに他の受信者を表示しない

これは私のコードで、3人の異なるユーザーに同じメールを送信します

$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);

そして、これは私のGmailに表示されるものです(私のメールは最後のものです[email protected]):

enter image description here

しかし、私は、すべての連続した受信者に、以前に誰に電子メールが送信されたかを知らせたくありません。どうすれば解決できますか? JMailのAPIページで何も見つかりません。

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

Joomla 3.5.1の使用

5
Adam M.

APIリファレンスページでわかるように、sendMail()関数には_$bcc_パラメータがあります。

sendMail(string $ from、string $ fromName、mixed $ recipient、string $ subject、string $ body、boolean $ mode = false、mixed $ cc = null、mixed $ bcc = null、mixed $ attachment = null、mixed $ replyTo = null、混合$ replyToName = null)

また、同じメールを3人の異なる受信者に送信する場合は、sendMail()関数を3回使用する必要はありませんが、代わりに受信者のarrayを定義するだけです。

次のことを試してください。

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

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

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

次の2つの解決策があります。

  • メーラーインスタンスを回避することにより:_$mailer_および次のコードを使用して-

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);`
_

詳細については参照してください:

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

  • 次のように受信者の配列を取得し、メーラーインスタンスをループ内に配置します-

_$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();
}
_

詳細については参照してください:

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

3
Liz.

Joomla MailerはPHPMailerを拡張しているため、send()の後にこのコード行を追加できます。

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