使用PHP/AJAX从HTML表单发送电子邮件

4
我想将用户填写的信息从HTML表单发送到我的电子邮件地址。据我所知,由于电子邮件的工作方式,仅使用客户端编码无法完成此操作,建议使用PHP(结合AJAX)来处理服务器端代码。我按照这里的指南进行了操作,但我没有在我的电子邮件地址收到任何电子邮件。在我将代码部署到客户的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 使用的邮件传递机制? - PeeHaa
顺便提一下,这条信息只会打印文本“Array”,因为 $_REQUEST 是一个数组。 - PeeHaa
你可能还需要在XAMPP中设置电子邮件设置。请查看此处:https://dev59.com/eG445IYBdhLWcg3w4-Be - septemberbrain
哦,我没意识到你需要一个邮件传递机制。我现在会安装它。那么当我将我的代码部署到客户的Web主机(goDaddy)时,我需要做些特别的事情吗? - Jon
5个回答

2

您应该用$_REQUEST["data"]或类似的替代$_REQUEST,因为$_REQUEST是一个数组。


虽然你是正确的,但我怀疑这不会解决 OP 的问题。 - PeeHaa
@PeeHaa 为什么?给Uhehesh一个改进他/她答案的机会。 - 11684
我认为我的回答对他的电子邮件问题没有太大帮助,但可以节省他思考为什么只发送了“Array”的时间。 - Uhehesh
1
@Uhehesh 啊,我没有意识到。那会为我节省很多时间。谢谢 :) - Jon
@11684 我还不太确定。我还在尝试设置 Mercury。我是 XAMPP 的新手,所以我正在观看视频教程,因为我没有理解 stackoverflow 上的教程。 - Jon
显示剩余4条评论


1
所有时间页面都在刷新。以下是我的代码:
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';
}
?>

0

你应该向表单返回 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;
})

0
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'] 在代码中获取数据


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接