2015-03-27 2 views
0

Я сделал «сырой» контакт с контактной формой PHP год назад, много раз проверял, он работал. Он должен просто отправить электронное письмо в учетную запись Gmail с предоставленным адресом электронной почты или параметрами контактной информации, включенными в тело электронной почты.Contact form handler вдруг не отправляет письма в Gmail

Теперь на редизайне я вернулся в контактную форму, проверил ее случайным образом и ничего не отправил. Нет сообщений об ошибках, представленная форма никогда не приходит в основной почтовый ящик Gmail, в отличие от нее.

<?php 
$errors = ''; 
$myemail = '[email protected]'; 
$noreply = '[email protected]'; 

if (empty($_POST['email'])) 
{ 
    $errors .= "\n Error: Please provide an e-mail address where we can send the newsletter and special deals"; 
} 

$email_address = $_POST['email']; 

if (!preg_match(
    "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", 
    $email_address)) 
{ 
    $errors .= "\n Error: Invalid email address"; 
} 

if (empty($errors)) 
{ 
    $to = $myemail; 
    $email_subject = "Contact form submission: $email_address"; 
    $email_body = "You have received a newsletter signup. ". 
     "Email: $email_address"; 

    $headers = "From: $noreply\n"; 
    $headers .= "Reply-To: $email_address"; 

    mail($to,$email_subject,$email_body,$headers); 
    //redirect to the 'thank you' page 
    header('Location: newsletter_submit.html'); 
} 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
     <title>Contact form handler</title> 
    </head> 
    <body> 
    <!-- This page is displayed only if there is some error --> 
    <?php 
    echo nl2br($errors); 
    ?> 
    </body> 
</html> 

Это случилось с другой подобной формы на этом сайте, мне интересно, если что-то не так с кодом (Althought он работал один раз) или Gmail-то изменилось. Я пробовал использовать белый почтовый ящик формы, но ничего не изменилось.

+0

Возможно, ваша система не настроена для отображения ошибок. Добавьте отчет об ошибках в начало вашего файла (ов) сразу после открытия PHP-тега , например '

+0

Кроме того, замените 'mail ($ to, $ email_subject, $ email_body, $ headers);' с 'if (mail ($ to, $ email_subject, $ email_body, $ headers)) {echo" mail sent "; } else {echo "error, проверьте ваши журналы"; } '- Если вы видите« отправленное письмо », PHP/server выполнил свою работу. То, что происходит после этого, находится вне вашего контроля. –

+0

Возможно, вам стоит проверить, не занесен ли ваш сервер ** в черный список ** для отправки спама, возможно, если вы используете ** общий хостинг ** – dvhh

ответ

0

Оказалось, что наш почтовый сервер отклонил электронные письма с одним доменом. Я изменил «myemail» на учетную запись gmail и «noreply» на фактический почтовый адрес почтового сервера, после чего формы снова появились в почтовом ящике gmail. -.-

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