PHP почта не работает - PullRequest
0 голосов
/ 01 июля 2011

Моя контактная форма PHP никуда не отправляет мою электронную почту, будь то Входящие или Спам. PHP является последней версией и работает на сервере, на котором установлен SMTP. Я не уверен, мой ли это код или программа ...

Вот мой скрипт контакта php:

    <?php
$to = "FILTERED";
$subject = $_POST['subject'];
$message = $_POST['message'] ." From: " .$_POST['email'];
$from =    "contactform@contact.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
?>

и моя форма:

<form method='post' action='contactscript.php'>
  Email: <input name='email' type='text' /><br />
  Subject: <input name='subject' type='text' /><br />
  Message:<br />
  <textarea name='message' rows='15' cols='40'>
  </textarea><br />
  <input type='submit' />
  </form>

Ответы [ 5 ]

1 голос
/ 01 июля 2011

Чтобы определить, кроется ли проблема в вашем коде или во внешнем программном обеспечении, проверьте возвращаемое значение mail().

if ( mail($to,$subject,$message,$headers) ) {
    echo "Message was sent";
}
else {
    echo "Sending failed.";
}

Если оно возвращает false, ошибка кроется в вашем скрипте илисообщение не было принято к доставке почтовым сервером.

0 голосов
/ 01 июля 2011

Хотя вы можете изменить это с помощью параметров и переменных конфигурации, php mail () по умолчанию использует sendmail.Если он не установлен в стандартном месте и вы не настроили его явно для использования другого метода, mail () завершится с ошибкой.

0 голосов
/ 01 июля 2011

Я бы взял это на аутсорсинг, используя что-то вроде sendgrid с бесплатным планом 200 сообщений в день.Это гарантирует, что ваши сообщения не будут помечены как спам, поскольку они используют DKIM / SPF (не так-то легко справиться с собой), и вам не нужно беспокоиться о масштабировании.


0 голосов
/ 01 июля 2011

Может быть добавить пробел после двоеточия From?

$headers = "From:" . $from; 

->

$headers = "From: " . $from;

Но да, либо var_dump, либо echo out mail ():

echo mail($blah,...);

1 - успех, 0 - сбой.

Кроме того, $ to не является действительным адресом электронной почты ..

0 голосов
/ 01 июля 2011

Я надеюсь - $ to = "FILTERED";означает, что вы помещаете отфильтрованные адреса электронной почты в $ to.Если mail () не работает, вы должны получить ошибку в PHP.Включите отчеты об ошибках или проверьте файл журнала.Если mail () не работает, то это больше не проблема PHP, вам следует проверить почтовый сервер.Вы также можете попытаться отправить письмо с помощью mail () с жестко заданными значениями, чтобы проверить, исчезнет ли почта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...