Содержание формы не отображается в электронном письме - PullRequest
0 голосов
/ 24 марта 2010

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

Вот код формы в вопросе:

<form method="post" action="contact.php" name="contactform" id="contactform">

        <fieldset>

        <legend>Please fill in the following form to contact us</legend>

        <label for="name"><span class="required">*</span> Your Name</label>
        <input name="name" type="text" id="name" size="30" value="" /> 

        <br />

        <label for="company">Company</label>
        <input name="company" type="text" id="company" size="30" value="" /> 

        <br />

        <label for="email"><span class="required">*</span> Email</label>
        <input name="email" type="text" id="email" size="30" value="" />

        <br />
        <label for="phone"><span class="required">*</span> Phone</label>
        <input name="phone" type="text" id="phone" size="30" value="" />

        <br />
        <label for="purpose"><span class="required">*</span> Purpose</label>
        <select name="purpose" id="purpose"  style="width: 300px; height:35px;">
            <option value="none selected" selected="selected">-- Select One --</option>
            <option value="I am interested in your services">I am interested in your services!</option>
            <option value="I am interested in a partnership">I am interested in a partnership!</option>
    <option value="I am interested in a job">I am interested in a job!</option>
        </select>

        <br />
        <label for=comments><span class="required">*</span> Comments</label>
        <textarea name="comments" cols="40" rows="3"  id="comments" style="width: 350px;"></textarea>

        <p><span class="required">*</span> Please help us control spam.</p>

        <label for=verify accesskey=V>&nbsp;&nbsp;&nbsp;3 + 1 =</label>
        <input name="verify" type="text" id="verify" size="4" value="" style="width: 30px;" /><br /><br />

        <input type="submit" class="submit" id="submit" value="Submit" />

        </fieldset>

        </form>

Затем он обрабатывается в PHP и должен выводить выбранную опцию в электронное письмо, однако в строке «Причина контакта» всегда ничего нет.

Вот код PHP:

<?php

if(!$_POST) exit;

    $name           = $_POST['name'];
    $company        = $_POST['company'];
    $email          = $_POST['email'];
    $phone          = $_POST['phone'];
    $purpose        = $_POST['purpose'];
    $comments   = $_POST['comments'];
    $verify         = $_POST['verify'];

    if(trim($name) == '') {
        echo '<div class="error_message">Attention! You must enter your name.</div>';
        exit(); 
    } else if(trim($email) == '') {
        echo '<div class="error_message">Attention! Please enter a valid email address.</div>';
        exit();
    } else if(trim($phone) == '') {
        echo '<div class="error_message">Attention! Please enter a valid phone number.</div>';
        exit();
    } else if(!isEmail($email)) {
        echo '<div class="error_message">Attention! You have enter an invalid e-mail address, try again.</div>';
        exit();
    }

    if(trim($comments) == '') {
        echo '<div class="error_message">Attention! Please enter your message.</div>';
        exit();
    } else if(trim($verify) == '') {
        echo '<div class="error_message">Attention! Please enter the verification number.</div>';
        exit();
    } else if(trim($verify) != '4') {
        echo '<div class="error_message">Attention! The verification number you entered is incorrect.</div>';
        exit();  
    }

    if($error == '') {

        if(get_magic_quotes_gpc()) {
            $comments = stripslashes($comments);
        }


     // Configuration option.
     // Enter the email address that you want to emails to be sent to.
     // Example $address = "joe.doe@yourdomain.com";

     $address = "myname@email.com";




     // Configuration option.
     // i.e. The standard subject will appear as, "You've been contacted by John Doe."

     // Example, $e_subject = '$name . ' has contacted you via Your Website.';

     $e_subject = 'You\'ve been contacted by ' . $name . '.';


     // Configuration option.
     // You can change this if you feel that you need to.
     // Developers, you may wish to add more fields to the form, in which case you must be sure to add them here.

     $e_body = "You have been contacted by $name.\r\n\n";
     $e_company = "Company: $company\r\n\n";
     $e_content = "Comments: \"$comments\"\r\n\n";
     $e_purpose = "Reason for contact: $purpose\r\n\n";

     $e_reply = "You can contact $name via email, $email or via phone $phone";

     $msg = $e_body . $e_content . $e_company . $e_purpose . $e_reply;

     if(mail($address, $e_subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n")) {


     // Email has sent successfully, echo a success page.

     echo "<fieldset>";         
     echo "<div id='success_page'>";
     echo "<h1>Email Sent Successfully.</h1>";
     echo "<p>Thank you <strong>$name</strong>, your message has been submitted to us.</p>";
     echo "</div>";
     echo "</fieldset>";

     } else {

     echo 'ERROR!';

     }

}

function isEmail($email) { // Email address verification, do not edit.

return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));

}
?>

Любая помощь будет принята с благодарностью. Спасибо!

Ответы [ 2 ]

2 голосов
/ 24 марта 2010

Похоже, это должно сработать, поэтому я бы проверил очевидные вещи: содержится ли твой тег <select> в теге <form>? Неправильно ли напечатано слово «цель» (здесь все хорошо, из того, что я вижу)?

Что произойдет, если вы сделаете print_r($_POST)? Что произойдет, если вы выполните var_dump($purpose) после его инициализации?

0 голосов
/ 24 марта 2010

Проверяли ли вы, может ли сервер отправлять электронные письма?

Проверьте, действительно ли sendmail работает на вашем сервере, прежде чем пытаться отлаживать ваш код (это кажется хорошим).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...