联系表单发送空白电子邮件

时间:2015-09-03 11:38:58

标签: php email

我的联系表单中不包含电子邮件中的消息和其他信息。

有'未知发件人'和'无主题'。电子邮件包含我的标签(来自:,subject:,message :)但没有内容写在他们之后。

我尝试过其他一些脚本,但是它们给出了相同的结果。

我的JS代码

(function($){
$(document).ready(function() {
    $('#submit-form').click(function(e){

        e.preventDefault();
        var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
        var name  = $('#rp_name').val(),
            email  = $('#rp_email').val(),
            subject  = $('#rp_subject').val(),
            message  = $('#rp_message').val(),
            data_html,
            success = $('#success');

        if(name === ""){
            $('#rp_name').val('Please enter your name.');
        }

        if(subject === ""){
            $('#rp_subject').val('Please enter your name.');
        }

        if(email === ""){
            $('#rp_email').val('Your email is required.');
        }else if(reg.test(email) === false){
            $('#rp_email').val('Invalid Email Address.');
        }

        if(message === ""){
            $('#rp_message').val('Message is required.');
        }

        if(message !== "" && name !== "" && reg.test(email) !== false) {
            data_html = "name=" + name + "&email="+ email + "&message=" + message + "&subject="+ subject;

            alert(data_html);
            $.ajax({
                type: 'POST',
                url: 'php_helpers/contact_form.php',
                data: data_html,
                success: function(msg){

                    if (msg == 'sent'){
                        success.html('<div class="alert alert-success">Message <strong>successfully</strong> sent!</div>')  ;
                        $('#rp_name').val('');
                        $('#rp_email').val('');
                        $('#rp_message').val('');
                    }else{
                        success.html('<div class="alert alert-error">Message <strong>not</strong> sent! Please Try Again!</div>')  ; 
                    }
                }
            });

        }
        return false;
    });
});
})(jQuery);

我的PHP代码

<?php

$to = 'email'; // I changed it 

$subject = $_POST['subject'];

if($to) {
$name = $_POST['name'];
$email = $_POST['email'];

$fields = array(
    0 => array(
        'text' => 'Imie',
        'val' => $_POST['name']
    ),
    1 => array(
        'text' => 'Email',
        'val' => $_POST['email']
    ),
    2 => array(
        'text' => 'WIADOMOSC',
        'val' => $_POST['message']
    )
);

$message = "";

foreach($fields as $field) {
    $message .= $field['text'].": " . htmlspecialchars($field['val'], ENT_QUOTES) . "<br>\n";
}

$$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From: '. $email . "\r\n" . 'X-Mailer: PHP/' . phpversion();


mail($to, $subject, $message, $headers);

if ($message){
echo 'sent';
}else{
echo 'failed';
}
} else {
echo "Don't access this file directly"; 
}
?>

我会很高兴任何提示。

4 个答案:

答案 0 :(得分:0)

我检查你的contact.php文件代码是好的。但是如果使用firefox你需要一件事。请控制你的代码。我的意思是当你打开firebug时会有一个选项控制台。在帮助下你可以检查你的价值以及变量是否正在运行或者它们是空的。

我认为你的价值不是PHP文件。使用控制台,你很容易破坏你的价值。

我希望这对你有用。

答案 1 :(得分:0)

检查您的php脚本是否收到姓名,电子邮件和消息。您可以使用

进行检查
var_dump($_POST);

如果服务器没有收到这些变量,请尝试将data_html作为对象发送: 改变

data: data_html,

data: {name: name, email: email, message: message}

我没有对它进行测试,但我总是使用这种方式将数据从js发送到服务器。

答案 2 :(得分:0)

您在行中使用了两个美元符号:$$ headers =&#39; MIME-Version:1.0&#39; 。 &#34; \ r \ n&#34 ;;
请删除&#34; $&#34;然后再试一次。

答案 3 :(得分:0)

感谢您的所有回复。我终于找到了解决方案。我之前没有使用过firebug,但是由于它我可以找到错误信息。现在脚本运行正常。

它不是代码,但是.htaccess重写规则为.php文件,这是ajax请求的错误(../contact而不是../contact.php)。

我有一个.php页面(文件上传器),我认为为它添加另一个易于使用的链接规则是一个好主意。