Проблема с полем From в форме контакта и функции mail () - PullRequest
1 голос
/ 28 декабря 2010

У меня есть контактная форма с 3 полями и текстовой областью ...
Я использую jQuery для проверки, а затем php для отправки писем.

Эта контактная форма работает нормально, но, когда я получаю электронное письмо, поле От не корректно. Я хочу, чтобы в поле «От» отображался текст, введенный в поле «Имя» контактной формы. Теперь я получаю поле От, как это: <nameOfMyServerAdmin@serverUrl.com>

Например, если пользователь вводит «Мэтью» в поле имени, я хочу, чтобы это слово «Мэтью» появилось в поле «От».

Это мой код (XHTML, jQuery, PHP):

<div id="contact">
    <h3 id="formHeader">Send Us a Message!</h3>
    <form id="contactForm" method="post" action="">
        <div id="risposta"></div> <!-- End Risposta Div -->
        <span>Name:</span>
        <input type="text" id="formName" value="" /><br />
        <span>E-mail:</span>
        <input type="text" id="formEmail" value="" /><br />
        <span>Subject:</span>
        <input type="text" id="formSubject" value="" /><br />
        <span>Message:</span>
        <textarea id="formMessage" rows="9" cols="20"></textarea><br />
        <input type="submit" id="formSend" value="Send" />
    </form>
</div>


<script type="text/javascript">
     $(document).ready(function(){
        $("#formSend").click(function(){

            var valid = '';
            var nome = $("#formName").val();
            var mail = $("#formEmail").val();
            var oggetto = $("#formSubject").val();
            var messaggio = $("#formMessage").val();

            if (nome.length<1) {
                valid += '<span>Name field empty.</span><br />';
            }
            if (!mail.match(/^([a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$)/i)) {
                valid += '<span>Email not valid or empty field.</span><br />';
            }
            if (oggetto.length<1) {
                valid += '<span>Subject field empty.</span><br />';
            }

            if (valid!='') {
                $("#risposta").fadeIn("slow");
                $("#risposta").html("<span><b>Error:</b></span><br />"+valid);
                $("#risposta").css("background-color","#ffc0c0");
            }
            else {
                var datastr ='nome=' + nome + '&mail=' + mail + '&oggetto=' + oggetto + '&messaggio=' + encodeURIComponent(messaggio);
                $("#risposta").css("display", "block");
                $("#risposta").css("background-color","#FFFFA0");
                $("#risposta").html("<span>Sending message...</span>");
                $("#risposta").fadeIn("slow");
                setTimeout("send('"+datastr+"')",2000);
            }
            return false;
        });
    });
    function send(datastr){
        $.ajax({    
            type: "POST",
            url: "contactForm.php",
            data: datastr,
            cache: false,
            success: function(html) {
            $("#risposta").fadeIn("slow");
            $("#risposta").html('<span>Message successfully sent.</span>');
            $("#risposta").css("background-color","#e1ffc0");
            setTimeout('$("#risposta").fadeOut("slow")',2000);
            }
        });
    }
    </script>

<?php
$mail = $_POST['mail'];
$nome = $_POST['nome'];
$oggetto = $_POST['oggetto'];
$text = $_POST['messaggio'];
$ip = $_SERVER['REMOTE_ADDR'];
$to = "support@matthewlabs.com";

$message = $text."<br /><br />IP: ".$ip."<br />";
$headers = "From: $nome \n";
$headers .= "Reply-To: $mail \n";
$headers .= "MIME-Version: 1.0 \n";
$headers .= "Content-Type: text/html; charset=UTF-8 \n";

mail($to, $oggetto, $message, $headers);
?>

1 Ответ

3 голосов
/ 28 декабря 2010

Вы должны использовать адрес электронной почты в заголовке «От:». Попробуйте это:

$headers = "From: $nome <$mail>\r\n";
$headers .= "Reply-To: $mail\r\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...