Ошибка нескольких получателей PHPmailer - PullRequest
0 голосов
/ 17 февраля 2010

У меня есть следующий код с PHPmailer:

$tomailn[0] = 'imap2@gazler.com';
$tomailn[1] = 'imap@gazler.com';
foreach($tomailn as $value)
{
$mail->AddAddress($value, '');
}

Но я получаю сообщение об ошибке "Не удалось создать экземпляр почтовой функции".

Если я удаляю элемент из массива, он работает нормально, но выдает ошибку при попытке добавить 2 или более адресов. Есть идеи, почему это происходит? Есть ли другой способ добавить несколько адресов электронной почты?

Ура, Gazler.

Ответы [ 6 ]

4 голосов
/ 21 февраля 2010

копаться в исходном коде. Отредактируйте PHPMailer.php и найдите «function MailSend». (В 5.0.2 это около строки 564).

В указанной функции уберите @ ограничитель ошибок из каждого вызова mail(). Убедитесь, что для error_reporting установлено что-то разумное для отладки. При разработке выбирайте что-то вроде этого:

error_reporting(E_ALL | E_STRICT);
ini_set('log_errors', 'On');
ini_set('display_errors', 'On');

Проверьте, показывает ли PHP какие-либо ошибки. PHPMailer генерирует исключительную ситуацию только тогда, когда последний вызов mail() возвращает что-то неверное или если $rt никогда не устанавливается, что означает, что if ($this->Sender != '' && strlen(ini_get('safe_mode'))< 1) оценивается как true.

Вы используете безопасный режим? Что говорят PHP Mailer $mailer->Sender и ini_get('safe_mode')? (Мое предположение: если вы не работаете в безопасном режиме, но у него установлено что-то вроде Off, этот код вернет true.)

0 голосов
/ 22 февраля 2010

«Не удалось создать экземпляр почтовой функции». Просто проверьте работоспособность вашей почтовой программы или нет. Часто эта ошибка возникает из-за ограничений со стороны хостинг-провайдера. Многие хостинг-провайдер блокирует вашу почтовую функцию, тогда обычно вы получаете эту ошибку

0 голосов
/ 21 февраля 2010

Попробуйте загрузить последнюю версию PHPMailer, если вы ее не используете, в ней исправлены ошибки. Скорее всего, ваш почтовый класс был испорчен.

0 голосов
/ 21 февраля 2010

Я только что просмотрел исходный код PHPMailer, сообщение «Не удалось создать экземпляр почтовой функции» указывает, что mail() возвращает false.

Можете ли вы попробовать ту же функцию, но с двумя разными адресами электронной почты, которые, как вы знаете, обычно принимают письма?

0 голосов
/ 19 февраля 2010

В большинстве случаев эта ошибка возникает, когда заголовок from не установлен или недействителен. Попробуйте установить эту переменную:

$mail->From = 'valid@mailaddress.com';

Если это все еще не работает, попробуйте выполнить одно из следующих действий:

  • проверить, включен ли на сервере mail (и настройки php.ini);
  • модуль openssl включен (выполнить phpinfo() и выполнить поиск OpenSSL)
0 голосов
/ 17 февраля 2010

ты пробовал просто $mail->AddAddress($value);?

...