Intereting Posts
REST API Embedded Signing -Docusign .htaccess между разработкой, постановкой и производством Как я могу легко и просто планировать работу cron в PHP? В чем смысл имени маркера PHP T_PAAMAYIM_NEKUDOTAYIM? незаконный код ошибки команды 127 в функции php exec Вставить несколько строк из массива, сохраненного в сеансе в таблицу? http.so загружен, но http_get undefined Как бы вы создали строку из всех символов UTF-8? Получить последний идентификатор вставки после подготовленной вставки с PDO Как добавить некоторые статические маршруты в приложение CodeIgniter? Laravel 5: Нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется Каков наилучший способ убедиться, что два человека не редактируют одну и ту же строку в моем веб-приложении? Перенаправление на новую страницу, когда пользователь использует Internet Explorer Замена службы переводчика в Symfony 3 php больше определенного времени

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

Когда я пытаюсь отправить почту через PHPMailer, я получаю это сообщение об ошибке. Мой код ниже:

<? require("phpmailer/class.phpmailer.php"); // First we require the PHPMailer libary in our script $mail = new PHPMailer(); // Next we create a new object of the PHPMailer called $mail $mail->From = "rajasekar.kcet@gmail.com"; $mail->FromName = "Rajasekar"; $mail->AddAddress("rajasekar.kcet@gmail.com"); // This is the adress to witch the email has to be send. $mail->Subject = "First PHP Email message"; // This is the subject of the email message. $mail->Body = "Hi! \n\n This is my first e-mail sent through PHP."; // This is the actual email message if(!$mail->Send()) // Now we send the email and check if it was send or not. { echo 'Message was not sent.'; echo 'Mailer error: ' . $mail->ErrorInfo; } else { echo 'Message has been sent.'; } ?> 

В Ubuntu (не менее 12.04) кажется, что sendmail не установлен по умолчанию. Вам нужно будет установить его с помощью команды sudo apt-get install sendmail-bin

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

Я использовал эту строку кода

 if($phpMailer->Send()){ echo 'Sent.<br/>'; }else{ echo 'Not sent: <pre>'.print_r(error_get_last(), true).'</pre>'; } 

чтобы выяснить, в чем проблема. Оказывается, я работал в безопасном режиме, а в строке 770 или что-то, пятый аргумент, $params , был mail() , который не поддерживается при работе в безопасном режиме. Я просто прокомментировал это, и он ответил:

 $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header/*, $params*/); 

Он находится в MailSend -функции PHPMailer.

У меня просто была эта проблема и я нашел в своем журнале ошибок apache, что sendmail was'nt был установлен, после установки все было так хорошо!

 root@web1:~$ tail /var/log/apache2/error.log sh: 1: /usr/sbin/sendmail: not found 

Была такая же проблема. Просто быстро просмотрел файл apache2 error.log и он точно сказал, в чем проблема:

 > sh: /usr/sbin/sendmail: Permission denied 

Таким образом, решение заключалось в предоставлении правильных разрешений для файла /usr/sbin/sendmail (он не был доступен из php).

Команда для этого:

 > chmod 777 /usr/sbin/sendmail 

будьте уверены, что он существует!

Убедитесь, что вы также включили класс smtp, который поставляется вместе с phpmailer:

 // for mailing require("phpmailer/class.phpmailer.php"); require("phpmailer/class.smtp.php"); 

Попробуйте использовать SMTP для отправки электронной почты: –

 $mail->IsSMTP(); $mail->Host = "smtp.example.com"; // optional // used only when SMTP requires authentication $mail->SMTPAuth = true; $mail->Username = 'smtp_username'; $mail->Password = 'smtp_password'; 

Чтобы пересмотреть старый поток, моя проблема заключалась в том, что один из адресов электронной почты «AddressTo» недействителен. Удаление этого адреса электронной почты устранило ошибку.

Попробуйте указать адрес, который не является gmail. Они не позволяют (насколько я знаю) доступ к почте для отправки почты. На прошлой неделе я делал простую почтовую программу, и они также не используют порты по умолчанию для отправки и требуют, чтобы вы переместили через https

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

Это системная ошибка.

Проверьте ошибку системы:

 tail /var/log/httpd/error_log 

Это может быть любая причина.

Как указано здесь : «Это означает, что ваша установка PHP не настроена правильно называть функцию mail () (например, sendmail_path не установлен правильно в вашем php.ini), или у вас не установлен и настроен локальный почтовый сервер».

В моем случае мне пришлось разрешить функцию mail () («активировать очередь mail ()» в настройках моего веб-хостинга.

«Не удалось создать почтовую функцию» – это способ PHPMailer сообщить, что вызов функции mail () (в расширении Mail) не удался. (Таким образом, вы используете почтовую программу «mail».)

Вы можете попытаться удалить @s перед вызовами mail () в PHPMailer :: MailSend и посмотреть, что, если таковые имеются, ошибки молча отбрасываются.

я решил свою проблему (для wamp)

  $mail->IsSMTP(); $mail->Host='hote_smtp'; 

изменения корса hote_smtp по правильному значению

Старая нить, но это может помочь кому-то вроде меня. Я решил проблему, установив значение SMTP-сервера в законное значение в PHP.ini

Просто пересматривая старый поток, вы можете глубже отладить PHPMailer, добавив:

 print_r(error_get_last()); 

это будет печатать точную ошибку для вас, которая вызывает прерывание по умолчанию php mail ().

Надеюсь, это поможет кому-то.

У меня была такая же ошибка. Проблема была вызвана Ответом. Я удалил его.

 $email->AddReplyTo( $admin_email, $admin_name );