При использовании PHPMailer в Joomla отправка электронной почты с помощью CC работает некорректно - PullRequest
2 голосов
/ 26 июля 2011

Я использую PHPMailer для отправки электронных писем в моем проекте Joomla.Когда я отправляю электронные письма с обоими адресами и cc, оба человека получают электронное письмо, но в электронном письме мы можем видеть только человека, чье имя было.Такое ощущение, что этот человек был отправлен как «скрытая копия» и, следовательно, не показан в электронном письме.Это поведение немного странно.

Любая помощь здесь была бы великолепна.

Ниже приведен код:

class EmailService {

    public function __construct($from_address = NULL, $from_name = NULL) {
        $config = & JFactory::getConfig();
        $from_address = isset($from_address) ? $from_address : $config->getValue('config.mailfrom');
        $from_name = isset($from_name) ? $from_name : $config->getValue('config.fromname');
        $sender = array(
            $from_address,
            $from_name
        );

        $this->mailer = JFactory::getMailer ( );
        $this->mailer->setSender($sender);
    }

       public function sendMail($recipient, $subject, $body, $type = 'html', $cc = null, $bcc = null, $attachment = null, $replyto = null, $replytoname = null) {
        if (!isset($this->mailer)) {
            throw new Exception("No mailer instance found!");
        }

        $this->mailer->addRecipient($recipient);
        $this->mailer->setSubject($subject);
        $this->mailer->setBody($body);

        if ($type == "html") {
            $this->mailer->isHTML(true);
        }

        if (isset($cc)) {
            $this->mailer->addCC($cc);
        }

        if (isset($bcc)) {
            $this->mailer->addBCC($bcc);
        }

        if (isset($attachment)) {
            $this->mailer->addAttachment($attachment);
        }

        if (is_array($replyto)) {
            $numReplyTo = count($replyto);
            for ($i = 0; $i < $numReplyTo; $i++) {
                $this->mailer->addReplyTo(array($replyto[$i], $replytoname[$i]));
            }
        } elseif (isset($replyto)) {
            $this->mailer->addReplyTo(array($replyto, $replytoname));
        }


        return $send = & $this->mailer->Send();
    }

[РЕДАКТИРОВАТЬ] Ниже приведен фрагмент использования

$recipient = array ("abc@abc.com");
$cc = array ("cc@cc.com");
$emailType = 'html';
$emailBody = "Some HTML content";

$this->emailService->sendMail($recipient, "Some Subject", $emailBody, $emailType, $cc);

1 Ответ

0 голосов
/ 10 мая 2012

Почему вы не используете почтовую программу Joomla по умолчанию?

$mailer =& JFactory::getMailer();

Документация Joomla для JMail

...