2015-01-28 3 views
-1

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

Мой код: PHP

<?php 
    if($_POST['formSubmit'] == "Submit") 
    {  
     //email variables 
     $subject = "Indie Rally - Welcome & Thanks!"; 
     $email_message = "Welcome and thanks for joining the Indie Rally Mailing List!\n\n"; 
     $email_message .= "Your Email: ".clean_string($first_name)." "; 
     $email_message .= "Has been added to our mailing list and will be used to give development, site feature updates, and news.\n\n"; 
     $email_message .= "If at any point you have feedback, ideas, suggestions for features of Indie Rally, feel free to email us any time at [email protected]\n"; 

     // create email headers 
     $headers = 'From: [email protected]' . "\r\n" . 
        'Reply-To: [email protected]' . "\r\n" . 
        'X-Mailer: PHP/' . phpversion(); 

     //Database Connection 
     mysql_connect ("localhost", "USERNAME", "PASS") or die ('Error: ' . mysql_error()); 
     mysql_select_db("DBNAME") or die ('Data error:' . mysql_error()); 

     $email = PrepSQL($_POST['formEmail']); 
     $query = "INSERT INTO mailinglist (email) VALUES (". $email . ")"; 

     mysql_query($query) or die ('Error updating database' . mysql_error()); 
     //success - email & forward 
     mail($email, $subject, $email_message, $headers); 
     header("Location: submitted.html"); 
    } 

    // function: PrepSQL() 
    // use stripslashes and mysql_real_escape_string PHP functions 
    // to sanitize a string for use in an SQL query 
    // 
    // also puts single quotes around the string 
    // 
    function PrepSQL($value) 
    { 
     // Stripslashes 
     if(get_magic_quotes_gpc()) 
     { 
      $value = stripslashes($value); 
     } 

     // Quote 
     $value = "'" . mysql_real_escape_string($value) . "'"; 

     return($value); 
    } 
    function clean_string($string) { 

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

     return str_replace($bad,"",$string); 

    } 
?> 

Мой код: форма

<div class="maillist"> 
      <?php 
        if(!empty($errorMessage)) 
        { 
          echo("<p>There was an error with your form:</p>\n"); 
          echo("<ul>" . $errorMessage . "</ul>\n"); 
        } 
      ?> 
      <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post"> 
        <p> 
        <input type="text" name="formEmail" maxlength="50" value="<?=$varEmail;?>" placeholder="Email Me Updates!" /> 
        <input type="submit" name="formSubmit" value="Submit" /> 
        </p> 
      </form> 
    </div> 

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

См http://www.indierally.com, чтобы увидеть именно то, что я говорю о

+0

Вы испытываете на своем локальном хосте? –

ответ

2

Ваша переменная $to не получает установлен таким образом, PHP не знает, куда послать электронную почту. Если вы изменили свой код:

if(!mail($to, $subject, $email_message, $headers)) { 
    echo 'error here...'; 
} else { 
    header("Location: submitted.html"); 
} 

Вы увидите сообщение об ошибке. Возможно, вы должны заменить $to на $email?

+0

спасибо, я только что исправил $ to back to $ email (внес некоторые изменения прямо перед тем, как я опубликовал и удалил переменную $ в переменную и забыл изменить ее на $ email. Я изменил ее, но она все еще не работает, я попробую получение ошибки из него – Meta

+1

@Meta Возможно, ваша функция 'PrepSQL' вернет электронное письмо с кавычками. Попробуйте установить переменную' $ to' в более чистую версию электронной почты (лишенная/без кавычек). – RhapX

+0

Это была проблема , спасибо! – Meta

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