2015-05-03 3 views
0

Я не знаю, является ли это общей проблемой, но я не могу понять, почему это происходит. Я пытаюсь обработать форму и отправить ее по электронной почте. Достаточно просто. Вот для него PHP-код. Когда кто-то заполняет форму, она показывает все, кроме электронной почты отправителей. Он появляется как неизвестный отправитель. Кто-нибудь знает, как я могу это исправить? Большое спасибо всем, кто занимает время, чтобы посмотреть на это.контактная форма не отправка отправителей электронная почта

<?php 

if($_POST["submit"]) { 
$recipient="[email protected]"; 
$subject="Form to email message"; 
$Name=$_POST["Name"]; 
$Phone=$_POST["Phone"]; 
$senderEmail=$_POST["senderEmail"]; 
$comments=$_POST["comments"]; 

$mailBody="Name: $Name\nPhone: $Phone\nEmail: $senderEmail\n\n$comments"; 

mail($recipient, $subject, $mailBody, "From: $Name <$comments>"); 

$thankYou="<p>Thank you! Your message has been sent.</p>"; 
} 

?> 
+0

Если '$ senderEmail' или' $ name' или любое из этих значений содержит строку «Неизвестный отправитель», то ясно, что это значение их размещения в форме. В этом случае этот код выполняет именно то, что он намерен делать. – David

+0

'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 's '? – chris85

+0

@ chris85 - от того, как он выглядит, это определенно проблема :) –

ответ

0

chris85 ответил на вопрос в комментариях:

From является $comments не должна быть $senderEmail?

Однако это не так просто. Вы не можете просто выбрать любой адрес электронной почты from и ожидать, что он будет работать. Клиент электронной почты скорее всего будет спамить ваши электронные письма, если вы попытаетесь обмануть адрес.

Всякий раз, когда вы изменяете From заголовок вы также должны изменить заголовок reply-to, в вашем случае, вы, вероятно, следует поместить заголовок From как один из адресов электронной почты на сервере и только изменить заголовок reply-to на любой пользователь в -putted. Таким образом, ваши сообщения, скорее всего, не будут спама, потому что это не похоже на то, что вы пытаетесь быть подлым.

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

Вот реальный простой один я писал: http://geneticcoder.blogspot.com/2014/08/wrapper-for-phps-mail-function.html

+0

Я понимаю, что вы сказали. Я также выяснил, почему он дал мне пустой адрес электронной почты для этого поля, поскольку $ Name <$comments> "), был неправильным. Я исправил это и отправил полную информацию, указанную в форме. Только адрес отправителя не указан, но я могу исправить что в свое время другой вопрос у меня есть, когда я пытаюсь использовать форму на моем сервере (бесплатный хостинг), это нормально. Когда я пытаюсь использовать его на другом сервере (работает через cloudflare), он дает мне ошибку шлюза 504. Любая идея Зачем? – Cerebros

0

Похоже, что заголовок установлен неправильно. Попробуйте что-то вроде этого:

<?php 

if($_POST["submit"]) { 
    $recipient="[email protected]"; 
    $subject="Form to email message"; 
    $Name=$_POST["Name"]; 
    $Phone=$_POST["Phone"]; 
    $senderEmail=$_POST["senderEmail"]; 
    $comments=$_POST["comments"]; 
    $header = "From: $senderEmail" . "\r\n" . 
    "Reply-To: $senderEmail" . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

    $mailBody="Name: $Name\nPhone: $Phone\nEmail: $senderEmail\n\n$comments"; 

    mail($recipient, $subject, $mailBody, $header); 

    $thankYou="<p>Thank you! Your message has been sent.</p>"; 
} 

?> 

Функция ссылки для функции PHP mail можно найти here.

Смежные вопросы