【问题标题】:send email with Js validation, php and ajax使用 Js 验证、php 和 ajax 发送电子邮件
【发布时间】:2013-09-20 23:51:02
【问题描述】:

我有一个简单的“联系我”表格。 是用 html 制作的(当然),用 Javascript 进行验证,而不是使用 Ajax 请求并将其全部发送到一个 php 文件,在那里应该再次验证表单并发送它。 (我只知道一点 php,所以我希望是这样的!)

“成功”或“未提交”消息在 html 中,由 ajax/js 显示。 所以我的问题很简单:如何将正文发送到我的个人电子邮件,包括 php 验证? 我给你看我的代码:

js/ajax:

myForm.submitForm = function(){
var formData = {
    name: myForm.name.val(),
    email: myForm.email.val(),
    text: myForm.text.val(),
};

$.ajax({
    url: 'contact.php',
    method: 'post',
    //dataType: 'json';
    success: myForm.submitSuccess,
    error: myForm.submitError
})
};

myForm.submitSuccess = function(data, textStatus, jqXHR){
console.log(data, textStatus, jqXHR);
myForm.succMess.html(data.message);
myForm.succMess.show();
};

myForm.errorSuccess = function(jqXHR, textStatus, errorThrown){
console.log(jqXHR, textStatus, errorThrown);
myForm.errorMess.html(textStatus);
myForm.errorMess.show();
};

PHP:

<?php
   $nome = $_POST['name'];
   $email = $_POST['email'];
   $text = nl2br($_POST['text']);

    //mail() I guess i should use this one but how?!    

    //check if inputs are empty
if(!empty($nome) and !empty($email) and !empty($text)){
    $mail_to = "myemail@gmail.com";
    $mail_from = $email;
    $mail_subject = "Email sent by $nome";
    $mail_body = "$nome: $email. $text";

?>

非常感谢任何帮助:)

【问题讨论】:

  • 您可以在 PHP.net 网站 php.net/manual/en/function.mail.phpmail() 函数上找到大部分或全部答案。如果你想发送$mail_body,只需使用mail($mail_to, $mail_subject, $mail_body, $headers);
  • 加上你的mail(); 会在$mail_body = "$nome: $email. $text"; 下而不是$text = nl2br($_POST['text']);
  • 感谢您的回答。是的,我已经看过官方文档,但我不明白。所以你的意思是我只需要在$mail_body 之后写mail($mail_to, $mail_subject, $mail_body, $headers); 就可以了?
  • 不客气。是的,有影响。不过我建议你使用&amp;&amp; 而不是and
  • 另外,我确实尝试了您的代码,但里面有些东西没有发送邮件。你是从哪里弄来的?我使用我自己版本的 Ajax 处理程序来处理邮件,效果很好。

标签: php ajax


【解决方案1】:

这是我用来通过 Ajax 和 jQuery 发送邮件的方法。

HTML 表单

<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">

$(document).ready(function(){

    $('#submit').click(function(){
        $('#success').hide(1);
        $.post("email_ajax.php", $("#contact").serialize(),  function(response) {
            $('#success').html(response);
            $('#success').show(1000);
        });
        return false;
    });
});
</script>

<style>

html {
/*    height: 100%; */

height:auto;
}
body {
    background:#000;
/*  background: url(bg.png);
    background-repeat:repeat;*/
    margin: 0px;
    padding: 0px;
    height: 100%;
    color: #fff;
    font-family: Proxima, sans-serif;;
}

#empty {
    display:block;
    clear:both;
    height:150px;
    width:auto;
    background:none;
    border:none;
}

#contact ul{
    margin-left:10px;
    list-style:none;
}

#contact ul li{
    margin-left:0px;
    list-style:none;
}
</style>
</head>

<body>
<form id="contact" action="" method="post">
<ul>
    <li>
        <label for="name">Name:</label><br>
        <input id="name" type="text" name="name"  width="250" size="35" required/>
    </li>
    <li>
        <label for="email">Email:</label><br>
        <input id="email" type="text" name="email" width="250" size="35" required/>
    </li>
<br><br>
    <li>
        <label for="message">Message:</label><br>
        <textarea id="message" name="message" rows="6" cols="40" required></textarea>
    </li>
    <li><input type="button" value=" SEND " id="submit" /><input type="reset" value="Reset" name="reset">
<div id="success" style="color: yellow;"></div></li>
</ul>
</form>
</body>
</html>

email_ajax.php

注意:$to = 'email@example.com';更改为您的电子邮件地址。

<?php
if((empty($_POST['name'])) || (empty($_POST['email'])) || (empty($_POST['message']))){
die("<b>ERROR!</b> All fields must be filled.");
}

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$name = strtolower($name);
$name = ucwords($name);

$to = 'email@example.com';
$subject = 'Website message from: '.$name;
$message = 'FROM: '.$name." \nEmail: ".$email."\nMessage: \n".$message;
$headers = 'From: email@example.com' . "\r\n";

if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 
mail($to, $subject, $message, $headers); 
echo "Thank you! Your email was sent $name.";
echo "<br>";
echo "This is the email you entered: <b>$email</b>";
}else{
// echo var_dump($_POST);
echo "<b>ERROR!</b> Invalid E-mail. Please provide a valid email address. Example: myEmail@example.com";
echo "<br>";
echo "The email <b>$email</b> you entered, is not valid.";
}

?>

【讨论】:

  • 耶!谢谢,现在我玩了一下,我会告诉你结果:)
  • @GiorgiaSambrotta 不客气。我想如果它对你有用,你会接受它吗?它对我有用,我不明白为什么它不适合你。 :)
  • 抱歉这么晚才回来。我以为我已经回答了。不管怎样,谢谢你的代码,效果很好:) 我只是对 $headers 有一些问题,它在某些方面破坏了一切,但没有它(无论如何我都不需要)效果很好。
  • @GiorgiaSambrotta 不客气。请考虑接受我的回答以结束问题,干杯
猜你喜欢
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 2018-01-26
  • 2011-06-18
相关资源
最近更新 更多