【问题标题】:Send Email with PHP/AJAX From HTML Form从 HTML 表单使用 PHP/AJAX 发送电子邮件
【发布时间】:2012-07-02 06:17:40
【问题描述】:

我想将用户填写的信息从 HTML 表单发送到我的电子邮件地址。据我了解,由于电子邮件工作方式的性质,这不能通过仅使用客户端编码来完成,并建议使用 PHP(结合 AJAX)来处理服务器端代码。我按照指南here 进行操作,但我的电子邮件地址没有收到任何电子邮件。在将代码部署到客户的 Web 空间 (goDaddy) 之前,我正在我的机器上进行本地测试(使用 XAMPP)。我想说明我以前从未使用过 PHP。

Javascript:

var data = "This is my email";
$.ajax({
    type: "POST",
    url: "email.php",
    data: data,
    dataType: "text"
});

PHP (email.php):

<?php
$to = "myself@hotmail.com";
$subject = "This is my email";
$message = $_REQUEST;
$send = mail($to, $subject, $message);
if(!$send){    
    die();  
}
?>

【问题讨论】:

  • 您的本地机器上是否有可供php使用的邮件传递机制?
  • BTW 该消息只会打印文本Array,因为$_REQUEST 是一个数组。
  • 您可能还需要在 XAMPP 中设置您的电子邮件设置。在这里查看:stackoverflow.com/questions/4652566/php-mail-setup-in-xampp
  • 哦,我没有意识到您需要邮件传递机制。我现在就安装它。当我将代码部署到客户的虚拟主机 (goDaddy) 时会怎样?我需要做一些特别的事情吗?

标签: php jquery html ajax


【解决方案1】:
【解决方案2】:

您应该将$_REQUEST 替换为$_REQUEST["data"] 或类似的东西,因为$_REQUEST 是一个数组。

【讨论】:

  • 虽然你是对的,但我怀疑它会解决 OP 的问题。
  • @PeeHaa 为什么?让 Uhehesh 有机会改进他/她的答案。
  • 我认为我的回答不会真正帮助他解决电子邮件问题,但会节省他思考为什么只发送“数组”的时间。
  • @Uhehesh 啊,我没有意识到这一点。那会为我节省很多时间。谢谢你:)
  • 另外,如果你使用$_REQUEST["data"],那么你需要在ajax调用中使用data: {data: data}
【解决方案3】:

页面一直在刷新。以下是我的代码:

HTML 5:

<form method="post" data-ajax="false">
<input type="text" name="email" placeholder="jack@example.com, jil@example.com">
<input type="submit" name="submit" value="Invite" class="submitBtn"> 
</form>

JS:

$('form').bind('submit',function(){
$.ajax({
type    : 'POST',
url     : 'data/invite.php',
data    : $(this).serialize(),
cache   : false,
dataType: 'text',
success : function (serverResponse) { alert('mail sent successfully.'); },
error   : function (jqXHR, textStatus, errorThrown) {alert('error sending mail');}
});
})

PHP:

<?php
$to         = $_POST['mail'];
$name       = 'Indusnet Technologies';
$subject    = 'Think Recycle';
$text       = 'Welcome to our site';

$message =' You received  a mail from '.$name;
$message .='Text of the message : '.$text;

if(mail($to, $subject,$message)){
    echo 'mail successful send';
}
else{
    echo 'there’s some errors to send the mail, verify your server options';
}
?>

【讨论】:

    【解决方案4】:
    var data = "This is my email";
    $.ajax({
        type: "POST",
        url: "email.php",
        data: data,
        dataType: "text"
    });
    

    这段代码应该是这样的

    var data = "This is my email";
    $.ajax({
        type: "POST",
        url: "email.php",
        data: {"data": data},
        dataType: "text"
    });
    

    并通过 $_POST['data'] 或 $_REQUEST['data'] 获取代码

    【讨论】:

      【解决方案5】:

      您可能应该在表单中返回 false。试试这个:

      $('form').submit(function(){
        $.ajax({
          type    : 'POST',
          url     : 'data/invite.php',
          data    : $(this).serialize(),
          cache   : false,
          dataType: 'text',
          success : function (serverResponse) { alert('mail sent successfully.'); },
          error   : function (jqXHR, textStatus, errorThrown) {alert('error sending mail');}
        });
      
      return false;
      })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-21
        • 2017-03-31
        • 2019-02-13
        相关资源
        最近更新 更多