发送包含从ajax请求中检索到的数据的电子邮件
Send email with data retrieved from an ajax request
我正在尝试从点击按钮的文本字段中检索信息,并将数据发送到mail@example.com:
$(document).ready(function() {
$("#submit").click(function() {
var email = $("#email").val();
var name = $("#Name").val();
var subject = $("#Subject").val();
var text = $("#textarea").val();
var telephone = $("#tel").val();
var varData = "email : " + email + "name : " + name + "subject : " + subject + "text : " + text + "telephone : " + telephone;
console.log(varData);
$.ajax({
type: "POST",
url: 'sendPHP.php',
data: varData,
success: function() {
alert("message sent");
}
});
});
});
sendPHP.php
:
<?php
$to = 'mail@example.com';
$name = $_POST['email'];
and so on ..
..
..
mail(mail@example.com, name, (here goes email, name, subject, textarea, tel) as message in new lines);
and somewhere i have to write from what emial im sending to example@gmail.com and what is it's password i guess
?>
虽然还不清楚您真正关心的是什么,但我对您的流程有一些想法。
1-您将数据作为字符串发送到php文件,这是不推荐的,可能会给您带来问题。我确实看到了通过post向服务器发送数据的两种方法:A)将数据存储在表单中并使用jQuery的$().serialize()函数,或者B)将数据保存在JSON对象中并以这种方式发送。
选项B是我的首选方法,因为JSON简化了一切。它的优点是,您的数据已经存储为键/值对,而且PHP使用JSON_decode函数可以非常容易地处理JSON。让我们对现有代码进行一些更改:
$(document).ready(function() {
$("#submit").click(function() {
var email = $("#email").val();
var name = $("#Name").val();
var subject = $("#Subject").val();
var text = $("#textarea").val();
var telephone = $("#tel").val();
var varData = {
"email" : email ,
"name" : name,
"subject" : subject,
"text" : text ,
"telephone" : telephone
} //This is your data in JSON form
console.log(varData);
$.ajax({
type: "POST",
url: 'sendPHP.php',
data: JSON.stringifiy(varData), //Notice that I added JSON.stringify
success: function() {
alert("message sent");
}
});
});
});
现在我将向您展示如何在PHP中处理这个问题——它实际上非常简单。
步骤1-将这个JSON对象变成一个关联数组,这样就可以很容易地使用:
$input = json_decode(file_get_contents('php://input'), true);
现在我们有一个名为$input的变量,它是一个与所有邮件数据相关的数组——让我们设置您需要的变量。
$email = $input['email']; //Notice string in brackets is JSON key
$name = $input['name'];
$subject = $input['subject'];
$text = $input['text'];
$telephone = $input['telephone'];
好的,很酷-您从前端收集的所有数据现在都可以在后端使用了。因此,看起来您正在使用PHP提供的内置mail()函数。我强烈建议使用库来实现这一点,因为它们通常更可靠、更详细。我最喜欢的是PHPMailer,这里有他们github页面的链接https://github.com/PHPMailer/PHPMailer.
如果你想使用这个库,这个过程很简单。
首先,在您的脚本中包含自动加载器文件
<?php
require('PHPMailer-master/PHPMailerAutoload.php');
接下来,他们已经在许多例子中记录了这一点,你创建了一个PHPMailer的新实例,并设置了一些基本变量——这是直接从他们的文档中得到的,我保证你会比尝试PHP mail()方法更轻松https://github.com/PHPMailer/PHPMailer/blob/master/examples/gmail.phps.
祝你好运,如果我有什么不清楚的地方,请告诉我。
- 如何在corona sdk中从CK编辑器中检索数据
- XML2JSON并检索数据
- 如何基于两个下拉选择从数据库中检索数据
- 在检索数据时是否可以停止图像加载请求
- 正在从JSON对象检索数据
- 只有当Angular从资源对象检索数据时,才选择选项元素
- 如何使用JavaScript从文本框中检索数据
- html表单,它有文本和表,现在我想在一个简单的文本文件中保存和检索数据,如何实现它
- 我想使用纯Javascript从MS Dynamics CRM Online 2015添加/检索数据
- Firebase-正在从推送项目中检索数据
- 为什么可以't我从Json文件中检索数据
- 从 tinymce 文本区域检索数据时出现问题
- 从 ajax 函数从数据库中检索数据值
- 检索数据表中的指定行
- 调用c#函数从传递javascript变量的javascript中检索数据
- 使用jqueryAjax和php脚本从mysql检索数据时遇到的问题
- JQuery:从URL检索数据
- SharePoint 2010 Rest API错误(未检索数据)
- JQuery检索数据,但如果退出,则获取默认值
- jQuery,用于检索数据的变量