2010-01-26 2 views
0

Я пытаюсь получить форму контакта php, работающую на моем портфолио (в настоящее время на бесплатной учетной записи megabyet.net), но при его тестировании (на загруженном сайте) даже хотя я получаю сообщение благодарности/подтверждения, я до сих пор не получаю никакого сообщения на моей учетной записи электронной почты (указано в коде), я не могу понять проблему здесь ... нужна помощь!php простую форму контакта не отправляя почту даже после подтверждения

это может быть что-то связанное с SMTP ??


Вот код:

<?php 
if(isset($_POST['submit'])) { 

$to = "[email protected]"; 
$subject = "Portfolio Contact"; 
$name_field = $_POST['name']; 
$email_field = $_POST['email']; 
$message = $_POST['message']; 
$headers = "From: $email_field"; 
$body = "From: $name_field\n E-Mail: $email_field\n Message:\n $message"; 

echo "Mail has been sent, thankyou!"; 
mail($to, $subject, $body, $headers); 

} else { 

echo "blarg!"; 

} 
?> 

HTML код:

<form id="contact_frm" action="mail.php" method="POST"> 
<h4>Name :</h4> 
<input type="text" id="f_name" name="name"/><br/><br/> 
<h4>E-Mail Address :</h4> 
<input type="text" id="f_email" name="email"/><br/><br/> 
<h4>Message :</h4> 
<textarea id="f_msg" name="message" cols="22" rows="5"/></textarea><br/><br/> 
<input id="send_btn" type="submit" value="Send >>" name="submit" /><br/> 
</form> 

+0

Проверьте возврат с почты. Это должно дать вам правду об успехе. – Martin

+0

Вам даже разрешено использовать 'mail()' в вашей учетной записи? – random

+0

Я так думаю, так как функция почты возвращает true ... или этого недостаточно, чтобы подтвердить? – Vishu

ответ

1

Во-первых, вы должны проверить, если mail() возвращает истину или нет, чтобы определить, если письмо было отправлено успешно :

<?php 
if(isset($_POST['submit'])) { 

    $to = "[email protected]"; 
    $subject = "Portfolio Contact"; 
    $name_field = $_POST['name']; 
    $email_field = $_POST['email']; 
    $message = $_POST['message']; 
    $headers = "From: $email_field"; 
    $body = "From: $name_field\n E-Mail: $email_field\n Message:\n $message"; 

    $success = mail($to, $subject, $body, $headers); 
    if ($success) { 
     echo "Mail has been sent, thankyou!"; 
     // redirect to thank you page here 
    } 
    else { 
     echo "message failed"; 
    } 
} else { 

echo "blarg!"; 

} 
?> 

Попробуйте и сообщите нам, если это сработает.

Кроме того, вы пробовали отправить на другой адрес электронной почты? Возможно, Yahoo блокирует этот веб-узел для спама. Будучи свободным хозяином, это очень вероятный сценарий.

+0

Я попробовал код выше и получил неудачный вывод = (... подробности в моем ответе ниже ... – Vishu

0

Если вы ищете что-то, что связано с отправкой электронной почты через SMTP. Я бы рекомендовал вам использовать класс почтовых ящиков Code Igniters.

http://codeigniter.com/user_guide/libraries/email.html

Это также позволяет для отладки и обработки ошибок SMTP грациозно.

0

это может быть что-то связанное с SMTP ??

Возможно. Почему вы не проверяете свой mailq и файлы журнала с вашего MTA?

0

@John .. проверил, что если условие с кодом ниже и я получаю неудачный вывод =/... поэтому моя функция mail() возвращает false = (... и да, я пробовал gmail, но с функция почты не работает нормально на первом месте .... это не работает ...

<?php 
if(isset($_POST['submit'])) { 

$to = "[email protected]"; 
$subject = "Portfolio Contact"; 
$name_field = $_POST['name']; 
$email_field = $_POST['email']; 
$message = $_POST['message']; 
$headers = "From: $email_field"; 
$body = "From: $name_field\n E-Mail: $email_field\n Message:\n $message"; 

$success = mail($to, $subject, $body, $headers); 

if($success) { 
echo "Mail has been sent, thankyou!"; 

} else { 
echo "message sending failed!"; 
} 
} else { 
echo "blarg!"; 
} 
?> 

выход - сообщение не передано

так, мне нужно, чтобы определить некоторые дополнительные Params здесь? ... также я увидел, что мой хост дал путь к sendmail как - /usr/sbin/sendmail это имеет какое-либо отношение к моему функция почты действует плохо? ... я имею в виду, нужно ли мне определить параметр sendmail?

@ unknown- хм CodeIgniter может помочь, но я никогда не использовал его раньше ... давайте посмотрим ...

@ symcbean- жаль, что я не знаю, как это сделать: P ... probabaly cuz, я не очень хорошо разбираюсь в SMTP еще? .... все еще ученик/новичок ...

0

Если E-Mail выходит правильно, но никогда не прибывает, может случиться, что он попадает в фильтр спама. Несколько пунктов пулевых я написал в ответ на an similar question несколько месяцев назад:

  • адрес отправителя («От») принадлежит ли к домену на сервере? Если нет, сделайте это так.
  • Ваш сервер в черном списке (например, проверьте IP на spamhaus.org)? Это удаленная возможность с общим хостингом.
  • Отправлены ли письма фильтром спама? Откройте учетную запись с freemailer с папкой спама и узнайте. Кроме того, попробуйте отправить почту на адрес без спам-фильтра.
  • Возможно, вам нужен пятый параметр «-f» почты(), чтобы добавить адрес отправителя? (См. Команду mail() в руководстве по PHP)
  • Если у вас есть доступ к файлам журналов, проверьте их, как указано выше.
  • Вы проверяете адрес «from:» для возможных отказов («Возврат отправителю»)? Вы также можете настроить отдельный адрес «error-to».
+0

Я сделал адрес отправителя принадлежащим моему домену на моем сервере, он решил проблему с функцией mail(), возвращающей false, теперь я получаю сообщение об успешном завершении (из пересмотренного кода), означает, что mail() возвращает true, но все равно я не получаю почту, также не проверял папку со спамом, и проверил хост в spamhaus - это не в черном списке ... Файлы журнала не показывают ничего значимого, хотя мне придется исследовать параметр «-f» ... если у вас есть еще предложения/советы, пожалуйста, дайте мне знать .. спасибо за вся помощь до сих пор ... – Vishu

+0

Можете ли вы попробовать отправить почту на адрес, который не имеет блокировки спама, чтобы убедиться, что он отправлен правильно? –

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