Сбой отправки писем по PHP на WIMP - PullRequest
0 голосов
/ 17 июня 2011

У меня есть сайт WordPress с контактной формой, которая отлично работает в моей среде MAMP, но когда я публикую на WIMP-сервере своих клиентов, я получаю ошибку.

  • Я совсем не знаком со средами WIMP - как можно проверить журналы ошибок PHP
  • Случайно, есть ли проблемы с электронной почтой PHP на WIMP, которые могут быть причиной этого?

Код:

<?php 

if ($_POST["contact_name"]<>'') { 
    $ToEmail = 'me@domain.com'; 
    $EmailSubject = 'New contact message';  
    $mailheader = "From: ".$_POST["contact_email"]."\r\n";  
    $mailheader .= "Reply-To: ".$_POST["contact_email"]."\r\n"; 
    $mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";  
    $MESSAGE_BODY = "<b>Name:</b> ".$_POST["contact_name"]."<br>";  
    $MESSAGE_BODY .= "<b>Email:</b> ".$_POST["contact_email"]."<br>";
    mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure"); 

?> 
<h4>Your message was sent. We will be in touch with you shortly.</h4>
<?php 
} else { 
<form id="contact-form" name="contact" method="post" action="#">
<label for="contact-name">Name *</label>
<input type="text" id="contact-name" name="contact_name" tabindex="1" class="required"/>
<label for="contact-email">Email</label>
<input type="text" id="contact-email" name="contact_email" tabindex="2" class="email" />
<input type="submit" id="contact-submit" name="contact_submit" value="" tabindex="8" />
</form>
<?php 
}; 
?>

Ответы [ 2 ]

3 голосов
/ 17 июня 2011

Windows не имеет встроенного почтового сервера, как это обычно бывает в ОС Unix. Вам нужно настроить php.ini для добавления информации о SMTP-сервере, через которую можно ретранслировать электронную почту.

2 голосов
/ 17 июня 2011

Справочная страница PHP * для функции `mail () ' описывает ряд специфических для Windows пунктов. Тем не менее, основные моменты, которые могут повлиять на вас в этом разделе: (процитировать)

Реализация mail () в Windows во многом отличается от реализации Unix. Во-первых, он не использует локальный двоичный файл для составления сообщений, а работает только с прямыми сокетами, что означает, что MTA необходим для прослушивания сетевого сокета (который может быть либо на локальном хосте, либо на удаленной машине).

Во-вторых, пользовательские заголовки, такие как From :, Cc :, Bcc: и Date: в первую очередь не интерпретируются MTA, но анализируются PHP.

Таким образом, параметр to не должен быть адресом в форме "Something <someone@example.com>". Команда mail может не анализировать это правильно во время разговора с MTA.

Есть еще несколько вещей, которые следует учитывать; пожалуйста, прочитайте страницу руководства для получения дополнительной информации.

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

...