копаться в исходном коде. Отредактируйте 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
.)