phpmailer 1.73

Активист

Активист
Команда форума
phpmailer 1.73

Заметил, если делаю
$objPHPMailer->AddAddress("[email protected]", "Иванов Вася");

И письмо шлю через mail();
То в заголовке кому (to) пишится просто [email protected], а не Иванов Вася <[email protected]>
Заменил 426 строчку в классе phpmailer
$to .= $this->to[$i][0];
на
$to .= $this->AddrFormat($this->to[$i]);
т.е. сделал
PHP:
    /**
     * Sends mail using the PHP mail() function.
     * @access private
     * @return bool
     */
    function MailSend($header, $body) {
        $to = "";
        for($i = 0; $i < count($this->to); $i++)
        {
            if($i != 0) { $to .= ", "; }
            $to .= $this->AddrFormat($this->to[$i]);
        }
Вопрос - правильно или нет. Можно ли использовать конструкцию Name <[email protected]> для того, что бы слать письма через mail(); Другими словами, баг или нет.
 

Активист

Активист
Команда форума
Может не туда написал, но

Еще раз подробнее
Скачал вот это:
http://phpmailer.sourceforge.net/

В документации к классу

>AddAddress (line 287)
>
>Adds a "To" address.
>void AddAddress (string $address, [string $name = ""])
>
> * string $address
> * string $name

Делаю
$objPHPMailer->AddAddress("[email protected]", "Иванов Вася");
$objPHPMailer->IsMail(); // Посылается при помощи функции mail();

В итоге, в письмо которое приходит на ящик
[email protected] заголовок To содержит [email protected],
а должен содержать Иванов Вася <[email protected]>
Исправил 426 строчку в классе phpmailer
$to .= $this->to[$i][0];
на
$to .= $this->AddrFormat($this->to[$i]);

Бага в классе?
 

Sender

Новичок
Активист
в 426 строке он формирует строку для mail функции, туда он пихает только адреса фактические

а в 360 строке формируется header, если ты взглянешь эту функцию увидишь (774 строка)
if(count($this->to) > 0)
$result .= $this->AddrAppend("To", $this->to);

функия AddrAppend уже формирует с именем все


то есть для mail функции только email, в тело письма header уже с именами

-~{}~ 14.03.07 12:41:

ps. класс не менялся с 2005 года, а пользуются им многие, баги там скорее всего исправлены какие обнаружены
 

Активист

Активист
Команда форума
>А может нужно слать методом Send?
Сам то понял, что сказал?

>IsMail (line 255)
>
>Sets Mailer to send message using PHP mail() function.
>void IsMail ()

-~{}~ 14.03.07 10:55:

Sender
Но если взглянуть на строку 772?
PHP:
 function CreateHeader() {
//...
// Функция, которая создает заголовки
//...
        // To be created automatically by mail()
        if($this->Mailer != "mail") // Строка 772
        {
            if(count($this->to) > 0)
                $result .= $this->AddrAppend("To", $this->to);
            else if (count($this->cc) == 0)
                $result .= $this->HeaderLine("To", "undisclosed-recipients:;");
            if(count($this->cc) > 0)
                $result .= $this->AddrAppend("Cc", $this->cc);
        }
//..
//..
Тоесть судя по коду
if($this->Mailer != "mail") - пропускает создание заголовка
To:
 

Sender

Новичок
Активист
ага, недочитал немного, кстати, там в комментарии и написано почему пропускает:
"To be created automatically by mail()"


наверное да, надо заменить как ты сделал...
 
Сверху