2013-09-14 2 views
-1

что не так с этим ..Как отправить электронное письмо? php codes

Я пытаюсь отправить сообщение на почту, но сообщение не получает ресивер .. что не так с моими кодами? или у вас есть предложения? пожалуйста, помогите:

вот мой код:

<?php 

if(isset($_POST['subject'], $_POST['sender'], $_POST['receiver'], $_POST['body']))  { 
    //Validate Subject 
     if(empty($_POST['subject'])) { 
      $errors[] = "Please enter a subject"; 
     } else{ 
      $subject = htmlentities($_POST['subject']); 
     } 

    //Validate Sender Email 
     if(empty($_POST['sender'])) { 
      $errors[] = "Please enter a valid eMail Address"; 
     } else if(strlen($_POST['sender']) > 347) { 
      $errors[] = "Email is too long. Please provide a valid email address"; 
     } else if(filter_var($_POST['sender'], FILTER_VALIDATE_EMAIL) === false) { 
      $errors[] = "Please provide a valid eMail address"; 
     }else{ 
      $email = "<" .htmlentities($_POST['sender']). ">"; 
     } 

    //Validate Receiver's Email 
     if(empty($_POST['receiver'])) { 
      $errors[] = "Please enter a valid eMail Address"; 
     } else if(strlen($_POST['receiver']) > 347) { 
      $errors[] = "Your email is too long. Please provide a valid email address"; 
     } else if(filter_var($_POST['receiver'], FILTER_VALIDATE_EMAIL) === false) { 
      $errors[] = "Please provide a valid eMail address"; 
     }else{ 
      $to = "<" .htmlentities($_POST['receiver']). ">"; 
     } 

    //Validate the Message 
     if(empty($_POST['body'])) { 
      $errors[] = "Please enter a message."; 
     } else { 
      $body = htmlentities($_POST['body']); 
     } 
     } 

?> 
<!DOCTYPE HTML> 
<html> 
<head> 
    <title>Mail Test</title> 
</head> 
<body> 
    <?php 
    if(empty($errors) === false) { 
    ?> 
     <ul> 
      <?php 
       foreach($errors as $error) { 
        echo "<li>", $error, "</li>"; 
       } 
      ?> 
     </ul> 
    <?php 
    } else { 
     if (isset($to, $subject, $body, $email)){ 
     mail($to, $subject, $body, "From: ($email)"); 
     echo "Message sent!"; 
     } 
    } 
    ?> 
    <form method="post" action=""> 
     <label for="subject"> Subject: </label> 
      <input type="text" id="subject" name="subject" /><br/> 

     <label for="sender"> Your eMail: </label> 
      <input type="text" id="sender" name="sender" /> <br/> 

     <label for="receiver"> Receiver: </label> 
      <input type="text" id="receiver" name="receiver" /> <br/> 

     <label for="body"> Message: </label> 
      <textarea id="body" name="body" cols="100" rows="20"> </textarea> <br/> 
      <input type="submit" value="Send Email" /> 
</body> 
</html> 
+2

Они проверили фильтры спама? Разве это не работает ни для кого, ни для некоторых людей? Можете ли вы по электронной почте самостоятельно? Вы проверили, работает ли вызов 'mail()'? У вас настроен SMTP-сервер? Вы проверили его журналы? – andrewsi

+1

Может возникнуть идея написать простой сценарий _much_, по сути, просто используя 'mail' самостоятельно, чтобы узнать, получена ли почта. Затем, на большом скрипте, введите отладочные сообщения, чтобы увидеть, где это может произойти неправильно. – halfer

+0

требуется SMTP-сервер ..? как я могу настроить это? – Jell

ответ

2

() Снимите в ($email) в mail($to, $subject, $body, "From: ($email)");

читать как:

mail($to, $subject, $body, "From: $email"); 

и теперь он будет работать. (проверено)

Когда я первоначально протестировали его с () вокруг $email, он попал в спам с unknown sender.

Затем, когда я удалил круглые скобки, он теперь попал в папку «Входящие» с адресом электронной почты отправителя.

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