Mail возвращает false

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

Сама библиотека сама по себе является оберткой вокруг функции почты. Он строит «границы» частей и всего.

Поскольку класс достаточно велик, я не буду публиковать его здесь … но мне интересно, каковы причины в теории того, почему почта вернет false?

  • SMTP установлен в PHP.ini
  • Отправитель задан в заголовках
  • Отправитель имеет форму: sender<sender@email.com >
  • Все отправлено правильно (body + headers + subject)
  • Предположим, что mail () работает правильно на веб-сайте, но на этой конкретной странице он просто не работает. Я знаю, что это должно происходить от меня, но было бы здорово, когда бы я начал искать.
  • О, и да, библиотека недокументирована.

[edit] Просто нашел меньшую функцию и все еще не работает, тогда я распечатаю ее:

 function send_html($from, $email, $subject = "AUCUN", $message, $cc = "", $bcc ="", $priotity = "3") { $headers = ""; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; if (strpos($from, "ourwebsite.com") != false || strpos($from, "rencontresportive.com") != "") { $headers .= "From: Ourwebsite.com <" . $from . ">\r\n"; } else { $headers .= "From: " . $from . " <" . $from . ">\r\n"; } $headers .= "X-Sender: <" . $from . ">\r\n"; $headers .= "X-Priority: " . $priotity . "\r\n"; $headers .= "X-Mailer: PHP\r\n"; $headers .= "Return-Path: <admin@ourwebsite.com>\r\n"; if ($cc != "") { $headers .= "cc:" . $cc . "\r\n"; } if ($bcc != "") { $headers .= "bcc:" . $bcc . "\r\n"; } if (mail($email, $subject, $message, $headers)) { return true; } else { return false; } } 

Я позвонил ему:

 send_html(contact@ourwebsite.com, me@me.com, utf8_decode("the subject"), "<h1>test</h1>"); 

Related of "Mail возвращает false"

Если класс является только оберткой вокруг почты функции, я бы попытался напечатать в файле параметры, используемые при вызове функции почты

У меня была такая же проблема. После обновления php функция почты всегда возвращает false.

Я использовал этот маленький фрагмент, чтобы проверить его:

 <?php error_reporting(E_ALL|E_STRICT); ini_set('display_errors', 1); echo 'I am : ' . `whoami`; $result = mail('myaddress@mydomain.com','Testing 1 2 3','This is a test.'); echo '<hr>Result was: ' . ( $result === FALSE ? 'FALSE' : 'TRUE') . $result; echo '<hr>'; echo phpinfo(); 

Решение установило значение в моем php.ini для «sendmail_from» и «sendmail_path». Правильные значения в моем случае были:

 sendmail_from = "no-reply@mydomain.net" sendmail_path = "/usr/sbin/sendmail -t -i" 

(Я использую CentOS 5.3 w / Zend Server CE.)

Вы можете использовать ini_set (), чтобы установить значение «sendmail_from», но параметр «sendmail_path» var должен быть настроен в вашем php.ini или http.conf.

У меня была аналогичная проблема, функция почты всегда возвращает false, даже если письмо получено успешно.

Я нашел в php конфигурационный файл php.ini, я настроил

 ; For Win32 only. ;sendmail_from = me@example.com ; For Unix only. sendmail_path = "/usr/sbin/sendmail -t -i -f "care@mydomain.com" 

Я изменил его ниже

 ; For Win32 only. ;sendmail_from = me@example.com ; For Unix only. sendmail_path = /usr/sbin/sendmail -t -i -f care@mydomain.com 

В соответствии с этим sendmail_from для win32, поэтому в * unix OS нам нужно установить значение, как показано в переменной sendmail_path.

С уважением Минеш

Попробуйте установить

 ini_set('sendmail_from', $from); 

Если бы вы могли показать нам код, было бы легче увидеть, что происходит не так.

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

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

Является ли ваше предположение, что функция mail () работает над тем, который вы тестировали? Я бы проверял, чтобы библиотека не просто пропускала функцию mail ().

Если вы протестировали это предположение, я бы рассмотрел операторы return из библиотеки и посмотрел, могу ли я найти то, что может вызвать ложное значение. Это часто возможно даже в недокументированном коде.