2014-02-14 3 views
-1

Начну с того, что я абсолютно ничего не знаю о PHP. Я больше .NET.Отправка электронной почты с PHP не работает

Я вытащил этот шаблон электронной почты из Интернета - и в инструкциях сказано просто изменить адрес электронной почты «Кому» и строку «Тема» на все, что я хотел. В самом конце моего PHP-файла у меня есть «Спасибо, что связались с нами. Мы скоро свяжемся с вами». - это сообщение отображается в моем браузере, когда я нажимаю «Отправить». Он думает на секунду, затем отображает сообщение, как бы указывающее мне, что отправлено электронное письмо. Но я не получаю никаких писем. Любые идеи почему?

Вот мой HTML код формы:

<form name="contactform" method="post" action="MailHandler.php"> 
    <table width="450px"> 
     <tr> 
      <td valign="top"> 
       <label for="first_name">First Name *</label> 
      </td> 
      <td valign="top"> 
       <input type="text" name="first_name" maxlength="50" size="30"> 
      </td> 
     </tr> 
     <tr> 
      <td valign="top"> 
       <label for="last_name"> 
       Last Name *</label> 
      </td> 
      <td valign="top"> 
       <input type="text" name="last_name" maxlength="50" size="30"> 
      </td> 
     </tr> 
     <tr> 
      <td valign="top"> 
       <label for="email">Email Address *</label> 
      </td> 
      <td valign="top"> 
       <input type="text" name="email" maxlength="80" size="30"> 
      </td> 
     </tr> 
     <tr> 
      <td valign="top"> 
       <label for="telephone">Telephone Number</label> 
      </td> 
      <td valign="top"> 
       <input type="text" name="telephone" maxlength="30" size="30"> 
      </td> 
     </tr> 
     <tr> 
      <td valign="top"> 
       <label for="comments">Comments *</label> 
      </td> 
      <td valign="top"> 
       <textarea name="comments" maxlength="1000" cols="25" rows="6"></textarea> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2" style="text-align:center"> 
       <br/> 
       <input type="submit" value="Submit"> 
      </td> 
     </tr> 
    </table> 
</form> 

Вот MailHandler.php:

<?php 

    if(isset($_POST['email'])) { 

     // EDIT THE 2 LINES BELOW AS REQUIRED 

     $email_to = "[email protected]"; 
     $email_subject = "Your email subject line"; 

     function died($error) { 

      // Your error code can go here 

      echo "We are very sorry, but there were error(s) found with the form you submitted. "; 
      echo "These errors appear below.<br /><br />"; 
      echo $error."<br /><br />"; 
      echo "Please go back and fix these errors.<br /><br />"; 
      die(); 
     } 

     // Validation expected data exists 

     if(!isset($_POST['first_name']) || 
      !isset($_POST['last_name']) || 
      !isset($_POST['email']) || 
      !isset($_POST['telephone']) || 
      !isset($_POST['comments'])) { 

      died('We are sorry, but there appears to be a problem with the form you submitted.'); 
     } 

     $first_name = $_POST['first_name']; // Required 
     $last_name = $_POST['last_name']; // Required 
     $email_from = $_POST['email']; // Required 
     $telephone = $_POST['telephone']; // Not required 
     $comments = $_POST['comments']; // required 

     $error_message = ""; 
     $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 

     if(!preg_match($email_exp,$email_from)) { 
      $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 
     } 

     $string_exp = "/^[A-Za-z .'-]+$/"; 

     if(!preg_match($string_exp,$first_name)) { 

      $error_message .= 'The First Name you entered does not appear to be valid.<br />'; 
     } 

     if(!preg_match($string_exp,$last_name)) { 

      $error_message .= 'The Last Name you entered does not appear to be valid.<br />'; 
     } 

     if(strlen($comments) < 2) { 

      $error_message .= 'The Comments you entered do not appear to be valid.<br />'; 
     } 

     if(strlen($error_message) > 0) { 

      died($error_message); 
     } 

     $email_message = "Form details below.\n\n"; 

     function clean_string($string) { 

      $bad = array("content-type","bcc:","to:","cc:","href"); 
      return str_replace($bad,"",$string); 
     } 

     $email_message .= "First Name: ".clean_string($first_name)."\n"; 
     $email_message .= "Last Name: ".clean_string($last_name)."\n"; 
     $email_message .= "Email: ".clean_string($email_from)."\n"; 
     $email_message .= "Telephone: ".clean_string($telephone)."\n"; 
     $email_message .= "Comments: ".clean_string($comments)."\n"; 

     // Create email headers 

     $headers = 'From: '.$email_from."\r\n". 
        'Reply-To: '.$email_from."\r\n" . 
        'X-Mailer: PHP/' . phpversion(); 
        @mail($email_to, $email_subject, $email_message, $headers); 
?> 

<!-- Include your own success HTML here --> 

Thank you for contacting us. We will be in touch with you very soon. 

<?php 

    } 
?> 
+0

Иногда хост не разрешает отправлять электронные письма. Вы должны обратиться в службу поддержки :-) – Haudegen

+0

Я подозреваю, что это связано с тем, что у вашего хоста нет установленного X-Mailer. – ElendilTheTall

ответ

1

Код выглядит легитимной. Спросите, поддерживает ли ваша принимающая фирма электронную почту с поддержкой PHP ...

+0

Да, я нахожусь в плане Windows, и мой хост Arvixe отключил функцию mail() на учетных записях Windows. –

+0

использовать почтовый код с поддержкой smtp. вы можете использовать https://code.google.com/a/apache-extras.org/p/phpmailer/ и сделать пример в: http://stackoverflow.com/questions/14456673/sending-email-with-php -from-smtp-server, и если вы хотите сделать это проще, попробуйте это: http://stackoverflow.com/questions/712392/send-email-using-gmail-smtp-server-from-php-page – Ave

1

Я сам использовал электронную почту на PHP. Переменные автоматически передаются из моего файла HTML в то, что вы вызываете в файле mailHandler.php. Он является примером того, как я использовал почтовую систему. Надеюсь, это полезно.

<?php 
$to = $_POST['emailaddress']; 
$subject = 'subject here'; 
$message = '<html><head><style type="text/css">Insert any css here</style></head><body>'; 
$message .= 'Any HTML like you were designing a standard screen display'; 
$from = 'emailaddress'; 
$headers = 'MIME-Version: 1.0' . "\r\n'; 
$headers .= "Content-type: text/html; charset=iso=8859-1' . "\r\n"; 
$headers .= "From: $email_from"; 
mail ($to,$subject,$message,$headers); 

echo "<input type='button' value=\"Click to Close \" onclick=\"window.open('urlHere.php','_self');\" />"; 
?> 

Это упрощенная версия, но она позволяет вам создавать/отправлять электронную почту, которая эмулирует веб-сайт в самом электронном письме. Просто добавьте любой HTML-код по строке внутри дополнительного сообщения $. = ''; раздел.

Я надеюсь, что это было полезно. Это как я делаю электронные письма.

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