php - 无法使用我的 wordpress 表单和 ajax 方法接收邮件
问题描述
如果一些stackoverflow用户可以帮助我,我提前感谢你。我使用 wordpress、ajax 和一个表单来接收两封邮件的提交。我没有检测到错误,但我没有在这两个奇怪的一封电子邮件上收到一次邮件。
这是我的代码:
在functions.php中
//envoyer une variable php a js proprement
wp_localize_script('ceddev_ajax_contact_js', 'ajaxurl',admin_url('admin-ajax.php'));
add_action('wp_enqueue_scripts','ceddev_scripts');
function ajax_form_accueil(){
check_ajax_referer( 'ajax_contact_nonce', 'security' ); // referent de securiter mis par l input hidden
// CONDITIONS NOM
if ( (isset($_POST["nom"])) && (strlen(trim($_POST["nom"])) > 0) ) {
$nom = wp_strip_all_tags( $_POST["nom"] );
}
// CONDITIONS PRENOM
if ( (isset($_POST["prenom"])) && (strlen(trim($_POST["prenom"])) > 0) ) {
$prenom = wp_strip_all_tags( $_POST["prenom"] );
}
// CONDITIONS EMAIL
if ( (isset($_POST["email"])) && (strlen(trim($_POST["email"])) > 0) && (filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) ) {
$email = sanitize_email( $_POST["email"]);
}
// CONDITIONS MESSAGE
if ( (isset($_POST["message"])) && (strlen(trim($_POST["message"])) > 0) ) {
$message = nl2br( stripslashes(wp_kses($_POST["message"],$GLOBALS['allowedtags'])));
}
// Les messages d'erreurs ci-dessus s'afficheront si Javascript est désactivé
// PREPARATION DES DONNEES
$ip = $_SERVER["REMOTE_ADDR"];
$hostname = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
$destinataire = array("cedaffair@hotmail.fr", "cedsimplon@gmail.com");
$objet = "[Site Web] " . $prenom;
$contenu = "Nom de l'expéditeur : " . $nom . "\r\n";
$contenu .= $message . "\r\n\n";
$contenu .= "Adresse IP de l'expéditeur : " . $ip . "\r\n";
$contenu .= "DLSAM : " . $hostname;
$headers = "CC: " . $email . " \r\n"; // ici l'expediteur du mail
$headers .= "Content-Type: text/plain; charset=\"ISO-8859-1\"; DelSp=\"Yes\"; format=flowed /r/n";
$headers .= "Content-Disposition: inline \r\n";
$headers .= "Content-Transfer-Encoding: 7bit \r\n";
$headers .= "MIME-Version: 1.0";
// SI LES CHAMPS SONT MAL REMPLIS
if ( (!empty($nom)) && (!empty($prenom)) && (!empty($email)) && (filter_var($email, FILTER_VALIDATE_EMAIL)) && (!empty($message)) ) {
wp_mail("cedsimplon@gmail.com", $objet, utf8_decode($contenu), $headers);
}
else{
echo '<h1> error</h1>';
}
wp_die();
// Les messages d'erreurs ci-dessus s'afficheront si Javascript est désactivé
}
add_action( 'wp_ajax_contact', 'ajax_form_accueil' ); //executed when login
add_action( 'wp_ajax_nopriv_contact', 'ajax_form_accueil' ); //executed when log out
在 ajaxcontact.js 中
$(document).ready(function () {
let busy = null;
$(".close").click(function () {
$("#contact-mess").css({ display: "none" });
$("#contact-mess2").css({ display: "none" });
});
$("#contact-form").submit(function (event) {
let nom = $("#nom").val();
let prenom = $("#prenom").val();
let email = $("#email").val();
let message = $("#message").val();
let dataString = nom + prenom + email + message;
let msg_all = "Merci de remplir tous les champs";
if (dataString == "") {
$("#contact-mess").css({ display: "block" });
$("#alert-text").html(msg_all);
} else if (nom == "") {
$("#contact-mess").css({ display: "block" });
$("#alert-text").html(msg_all);
} else if (prenom == "") {
$("#contact-mess").css({ display: "block" });
$("#alert-text").html(msg_all);
} else if (email == "") {
$("#contact-mess").css({ display: "block" });
$("#alert-text").html(msg_all);
} else if (message == "") {
$("#contact-mess").css({ display: "block" });
$("#alert-text").html(msg_all);
} else {
if(busy){
busy.abort();
}
busy = $.ajax({
url: ajaxurl,
type: "POST",
data: $(this).serialize(),
success: function () {
$("#contact-mess2").css({ display: "block" });
$("#alert-text2").html("Formulaire bien envoyé");
$("#contact-form").hide();
},
error: function () {
$("#contact-mess").css({ display: "block" });
$("#alert-text").html("<p>Erreur d'appel, le formulaire ne peut pas fonctionner</p>");
},
});
}
setTimeout(function () {
$(".mess").fadeOut("fast");
}, 4000);
return !1;
});
});
在我的表单前端:
<form action="" id="contact-form" method="POST">
<div class="form-group">
<label for="nom">Nom</label>
<input type="text" name="nom" class="form-control" id="nom" aria-describedby="emailHelp" placeholder="Entrer nom">
</div>
<div class="form-group ">
<label for="prenom">Prenom</label>
<input type="text" name="prenom" class="form-control" id="prenom" aria-describedby="emailHelp" placeholder="Entrer prenom">
</div>
<div class="form-group">
<label for="email">Email addresse</label>
<input type="email" id="email" name="email" class="form-control" aria-describedby="emailHelp" placeholder="Enter email">
<small id="emailHelp" class="form-text text-muted">Nous ne partagerons jamais votre adresse email</small>
</div>
<div class="form-group">
<label for="message">Votre message</label>
<textarea class="form-control" name="message" id="message" rows="3"></textarea>
</div>
<input type="hidden" name="action" value="contact">
<?php wp_nonce_field('ajax_contact_nonce','security');?>
<button type="submit" id="submit" class="btn btn-success btn-lg btn-block">Envoyer</button>
</form>
现在有两个时间在这个问题上,我需要在另一件事上进行讨论。提前感谢您的帮助,祝您早日愉快。:)
解决方案
推荐阅读
- jquery - 无法将 jQuery load() 与模态一起使用
- postgresql - postgres - 更新 jsonb 数组的语法
- linux - 在 AWS 实例中设置环境变量
- c# - 使用 IComparable 接口对从存储库返回的产品进行排序
- python - 将_excel读取到数据框中并将文件名保留为列(熊猫)
- winapi - 等待文件夹树完成复制
- jquery - $.ajax 不是函数,但 jquery 库正在工作
- rx-java - RxJava2 一个与 2 个订阅者进行 http 请求的 Observable 链运行请求两次
- android - 如何在操作栏/应用栏中对齐操作项和标题?
- php - 我如何将 php 代码回显到 codeigniter 视图