- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我决定问这个问题,因为没有简单的答案。我的 home.php 中有一个联系表单,如下所示:
HTML:
<form id="js-calculator" name="calculator" action="" method="post">
<input type="email" name="email" id="email" placeholder="E-mail" />
<input type="tel" name="phone" id="phone" placeholder="Phone" />
<textarea name="message" id="message" placeholder="Message"></textarea>
<label for="accept"><input class="" type="checkbox" id="accept" name="accept" /> I agree to terms and conditions</label>
<button type="submit" id="send__btn">Wyślij wycenę</button></p>
</form>
JavaScript:
jQuery(document).ready(function ($) {
$('#js-calculator').submit(function (e) {
e.preventDefault();
var $this = $(this);
$.ajax({
url: '<?php echo admin_url("admin-ajax.php") ?>',
type: 'post',
dataType: 'JSON',
data: $this.serialize()
}
});
});
});
functions.php 中的 PHP
// Function to send emails
function sendMail () {
$subject = 'Automatic evaluation';
$headers = 'From: My Website Contact Form <contact@mysite.com>';
$send_to = "office@mysite.com, ". $_POST['email'];
$subject = "Evaluation for ". $_POST['name'];
$message = "Message from ".$_POST['message'];
}
add_action('wp_ajax_sendhtmlmail', 'sendMail');
add_action('wp_ajax_nopriv_sendhtmlmail', 'sendMail');
add_filter( 'wp_mail_content_type', 'set_content_type' );
function set_content_type( $content_type ) {
return 'text/html';
}
// Function to update DB
function addCustomer(){
global $wpdb;
$phone = $_POST['phone'];
$email = $_POST['email'];
$accept = $_POST['accept'];
if($wpdb->insert('customers',array(
'phone'=>$phone,
'email'=>$email,
'accept'=>$accept
))===FALSE){
echo "Error";
} else {
$wpdb->insert_id;
}
die();
}
add_action('wp_ajax_addCustomer', 'addCustomer');
add_action('wp_ajax_nopriv_addCustomer', 'addCustomer');
我想要达到的目标是:1. 向客户和网站管理员发送一封 HTML 电子邮件,2. 将客户详细信息添加到数据库,检查电子邮件是否存在,3. 拥有安全的连接和数据流;
现在我不知道我做错了什么...任何帮助将不胜感激。
最佳答案
你已经快到了,有几件事:
在 JS ajax 调用中,您需要指定要调用的操作,这里是修改后的调用:
jQuery(document).ready(function ($) {
$('#js-calculator').submit(function (e) {
e.preventDefault();
var $this = $(this);
$.ajax({
url: '<?php echo admin_url("admin-ajax.php?action=sendhtmlmail") ?>',
type: 'post',
dataType: 'JSON',
data: $this.serialize()
}
});
});
});
现在,让我们看看 php 函数:
// Function to send emails
function sendMail () {
$data = array(
'email' = sanitize_email($_POST['email']),
'name' = sanitize_text_field($_POST['name']),
'message' = sanitize_text_field($_POST['message']),
);
$subject = 'Automatic evaluation;
$headers = 'From: My Website Contact Form <contact@mysite.com>';
$send_to = "office@mysite.com, ". $data['email'];
$subject = "Evaluation for ". $data['name'];
$message = "Message from ".$data['message'];
wp_mail($send_to, $subject, $message, $headers);
addCustomer($data);
// TODO: Fill in this $response array with meaninfull data (check output from wp_mail and addCustomer)
$response = array(
'success' => true
);
wp_send_json($response);
}
add_action('wp_ajax_sendhtmlmail', 'sendMail');
add_action('wp_ajax_nopriv_sendhtmlmail', 'sendMail');
只是缺少 wp_mail 调用和输入清理,我删除了其他 ajax 调用,并让 sendMail 函数将数据传递给 addCustomer 函数。您会注意到 wp_send_json 调用,这是将响应发送到 JS。 https://codex.wordpress.org/Function_Reference/wp_send_json
现在让我们看看您的 addCustomer 函数:
// Function to update DB
function addCustomer($data){
global $wpdb;
$phone = $data['phone'];
$email = $data['email'];
$accept = $data['accept'];
if($wpdb->insert('customers',array(
'phone'=>$phone,
'email'=>$email,
'accept'=>$accept
))===FALSE){
return false;
} else {
return $wpdb->insert_id;
}
}
这里唯一改变的是返回,以便调用者知道它是否失败。
要处理用户的输入,请从 WordPress 和核心功能中检查此文档: https://codex.wordpress.org/Validating_Sanitizing_and_Escaping_User_Data
<小时/>或者您可以一起使用以下插件:
使用方法如下:https://contactform7.com/save-submitted-messages-with-flamingo/
希望这对您有帮助!问候,
P.S wordpress 问题更适合这里:https://wordpress.stackexchange.com/
关于php - wp_mail() + Ajax + ValidationEngine + $wpdb->插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42225622/
嗨,我在 Cron 网页中使用 Wordpress 的这个功能,并在我的电子邮件中抛出了这个错误 fatal error :在线调用 /home/meusite/public_html/wp-cont
我有以下代码可以向我的帐户发送一封电子邮件。但是,这在用户提交表单后大约需要 3-5 分钟。有没有办法减少递送时间,或者这只是 wp_mail() 函数一直需要的?这是我的代码: if ($_
我正在我的 WordPress 插件中构建一个选项页面,我有一个表单,其中包含收件人、发件人、主题和消息以及保存和发送按钮。 想法是您填写收件人、发件人、主题和消息,然后单击“保存”,然后单击“发送”
我正在使用 wp_mail 发送带有我网站上的表单的邮件。但是当我附加一些文件时,名称类似于“phpr0vAqT”或“phpFO0ZoT”。 $files = array(); //Array pou
我想将以下字段发送到 wp_mail 如果我将Email to、Copy to和Bcc to中的所有电子邮件放入数组$emails 并将其传递给 wp_mail。如何在 wp_mail 中设置抄送和密
这是发送邮件的代码: $to = $_POST['leadEmail']; $subject = "my subject"; $message = ( $_POST['leadEmailPref']
我正在尝试在 React 中创建一个联系表单,我想用它通过我的 WordPress 安装发送电子邮件。通常,如果我进行 AJAX 调用,我必须将提交函数的名称作为操作传递,如下所示: jQuery.a
我使用 wp_mail html 内容类型来发送电子邮件。 ob_start(); ?> This is main content!! this is main content
我正在尝试从我的 wordpress 插件发送邮件,但是当我检索它时,它没有样式或图像。 我是这样做的: ", "MIME-Version: 1.0", "Content-type:
我在使用 wp_mail 函数时遇到问题,希望有人能帮助我。 我需要在用户添加到文本区域“消息”的电子邮件中插入换行符。 有人可以帮忙吗? 我目前有以下代码从联系表单发送电子邮件: ' . "\r\n
如何使用 wp_mail 函数发送带有自定义名称的附件。 截至目前,电子邮件是通过附件发送的,但文件名与物理文件名相同。 我无法重命名这些文件,因为我们有很多其他引用资料,但我想发送这些文件时使用一些
我在带有WordPress镜像(https://hub.docker.com/_/wordpress/)的docker-container中运行WordPress安装。我的问题是我无法通过wp_mai
我决定问这个问题,因为没有简单的答案。我的 home.php 中有一个联系表单,如下所示: HTML: I agree to terms and co
我将 wordpress 与 WP Mail SMTP 插件一起使用,以便通过经过身份验证的 SMTP 发送电子邮件。我现在已经在 SMTP 服务器上打开了它,这样我们就可以在那里中继并且测试邮件有效
我正在尝试使用 Wordpress 函数 wp_mail() 发送 HTML 邮件,如下所示: add_filter( 'wp_mail_content_type', function( $conte
是否可以使用具有 Content-Type: multipart/alternative 的 wp_mail() 函数发送电子邮件? 我需要发送可以显示为 HTML 或纯文本的电子邮件,具体取决于解释
我的 React 应用程序中有一个联系表单,我正在尝试让该表单使用 WP_Mail 发送电子邮件。我正在尝试使用 Axios 来做到这一点,但我似乎无法让它工作。我在 admin-ajax 调用中收到
我在 WordPress 中创建了一个新的自定义页面来测试发送电子邮件,这是我的代码... The HTML message'); wp_mail('salwaieh2012@gmail.com',
我有一个网站,允许访问者通过两种方式联系我 - 通过其自己页面上的联系表单和侧边栏中的“ajax”小型联系表单。 两种联系方式都会向我的 Gmail 帐户发送电子邮件。 其自己页面上的联系表单工作正常
如何使用高级电子邮件选项保存的连接设置在自定义外部 PHP 页面上使用 WordPress wp_mail(); 函数。 此外,PHP 页面托管在 /wp-content/wpmailtest.php
我是一名优秀的程序员,十分优秀!