2013-09-05 5 views
0

Я знаю, что мне отправляют статус «1» из этого файла процесса, так как работает мой JavaScript. Проблема в том, что я не получаю электронную почту.не получает письма от php

<?php 
//Retrieve form data. 
//GET - user submitted data using AJAX 
//POST - in case user does not support javascript, we'll use POST instead 
$name = ($_GET['name']) ? $_GET['name'] : $_POST['name']; 
$email = ($_GET['email']) ?$_GET['email'] : $_POST['email']; 
$comment = ($_GET['comment']) ?$_GET['comment'] : $_POST['comment']; 
//flag to indicate which method it uses. If POST set it to 1 
if ($_POST) $post=1; 
//Simple server side validation for POST data, of course, 
//you should validate the email 
if (!$name) $errors[count($errors)] = 'Please enter your name.'; 
if (!$email) $errors[count($errors)] = 'Please enter your email.'; 
if (!$comment) $errors[count($errors)] = 'Please enter your comment.'; 
//if the errors array is empty, send the mail 
if (!$errors) { 
    //recipient - change this to your name and email 
    $to = '[email protected]';  
    //sender 
    $from = $name . ' <' . $email . '>'; 

    //subject and the html message 
    $subject = 'Comment from ' . $name;  
    $message = ' 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head></head> 
    <body> 
    <table> 
     <tr><td>Name</td><td>' . $name . '</td></tr> 
     <tr><td>Email</td><td>' . $email . '</td></tr> 
     <tr><td>Comment</td><td>' . nl2br($comment) . '</td></tr> 
    </table> 
    </body> 
    </html>'; 
    //send the mail 
    $result = sendmail($to, $subject, $message, $from); 

    //if POST was used, display the message straight away 
    if ($_POST) { 
     if ($result) echo 'Thank you! We have received your message.'; 
     else echo 'Sorry, unexpected error. Please try again later'; 

    //else if GET was used, return the boolean value so that 
    //ajax script can react accordingly 
    //1 means success, 0 means failed 
    } else { 
     echo $result;  
    } 
//if the errors array has values 
} else { 
    //display the errors message 
    for ($i=0; $i<count($errors); $i++) echo $errors[$i] . '<br/>'; 
    echo '<a href="form.php">Back</a>'; 
    exit; 
} 
//Simple mail function with HTML header 
function sendmail($to, $subject, $message, $from) { 
    $headers = "MIME-Version: 1.0" . "\r\n"; 
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 
    $headers .= 'From: ' . $from . "\r\n"; 

    $result = mail($to,$subject,$message,$headers); 

    if ($result) return 1; 
    else return 0; 
} 
?> 
+1

выньте все, кроме самых основных частей почты(), скопируйте их, отправьте по адресу 5 по-разному, проверьте почтовый журнал. –

+0

Является ли это машиной Linux или машиной Windows, на которой работает PHP? Без дополнительной информации трудно предоставить вам направление. –

+0

xampp apache. извините, забыл упомянуть, что – user1873632

ответ

4

Вы упомянули, что используете GoDaddy. GoDaddy требует, чтобы вы правильно задали адрес отправителя, чтобы он соответствовал домену сайта, который он отправляет, или использует SMTP с аутентификацией.

Существует огромная зияющая дыра с этим методом отправки электронной почты. Спамеры могут легко переопределить От: заголовка, вставив дополнительных получателей.

Я не уверен, как почта, ориентированные на ваше приложение планирует быть, но я бы рекомендовал использовать пакет как PHPMailer или PEAR :: Почта как он берет на себя обработку для вас по электронной почте на гораздо более высоком уровень. Это позволит вам сосредоточиться на более важных частях вашего приложения. Встроенная функция PHP mail() очень ограничена по своим возможностям, и, пытаясь расширить возможности почты, вы столкнетесь со многими дорожными блоками, которые базовая функция mail() просто не может обрабатывать без большого количества дополнительной логики от вашего имени (вложения, MIME-типы и т. Д.).

+0

Кто-то собирается понизить мой ответ, но не дать причину, почему? Ну, это полезно. –

+0

Я даю +1, потому что вы ответили на вопрос в своем втором абзаце. -1, скорее всего, произошел от шлепа в первом абзаце, а затем ходатайство библиотеки в третьем. Сначала ответьте на вопрос, а затем продемонстрируйте потенциально лучшее решение. – OozeMeister

+0

Да, но это важный шаг. Спамеры процветают на веб-формах с такими отверстиями, и я просто пытаюсь смягчить катастрофу. Поэтому я также предложил библиотеку, поскольку она правильно выполняет электронную почту, прежде всего. –

0

при проверке почты вы можете протестировать его прямо на своем сервере, php mail имеет функцию, которая уже работает на нем. если вы проверите его на xampp локально, он не будет отправлен, если вы не установили почтовый ящик php в localhost. но для меня лучше проверить его на сервере, чем на локальном хосте.

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