我正在使用wp_mail() 使用ajax发送电子邮件。我的邮件代码如下。
add_action( \'wp_ajax_send_confirmation_email\', \'wpse_sendmail\' );
add_action( \'wp_ajax_nopriv_send_confirmation_email\', \'wpse_sendmail\' );
function wpse_sendmail() {
if(isset($_GET[\'is_email\']) && $_GET[\'is_email\'] == true){
$temp_dir = get_template_directory_uri();
$url = $temp_dir."/confirm_email.php?id=".$_REQUEST[\'id\']."&key=".$_REQUEST[\'key\'];
$message = "Username:".$_REQUEST[\'name\']."Click on below link to confirm your email;".$url;
$subject = "Email confirmation Link";
$headers = "From: [email protected]" . "\\r\\n";
if ( wp_mail( $_REQUEST[\'email\'], $subject, $message, $headers ) ) {
echo "1";
} else {
echo "0";
}
}
}
AJAX代码如下
add_action(\'wp_footer\',\'my_scripts\');
function my_scripts(){
?>
<script type="text/javascript">
jQuery("#send").click(function(e){
e.preventDefault(); // if the clicked element is a link
//...
var confirm_email=jQuery("#confirm_email").val();
var confirm_key=jQuery("#confirm_key").val();
var user_email=\'<?php echo $current_user->user_email;?>\';
var display_name=\'<?php echo $current_user->display_name;?>\';
var user_id=\'<?php echo $current_user->ID;?>\';
var data = { \'action\':\'send_confirmation_email\', \'email\':\'confirm_email\',\'key\':\'confirm_key\',\'name\':\'display_name\',\'id\':\'user_id\',\'is_email\':\'true\' };
jQuery.post(\'<?php echo admin_url(\'admin-ajax.php\'); ?>\', data, function(response) {
if(response=="1"){
jQuery(".confirm_email_section").html("<span class=\'alert alert-success\'>Confirmation link sent to your email. Check your email<span>");
}
else{
jQuery(".confirm_email_section").html("<span class=\'alert alert-danger\'>Error Occured<span>");
}
});
});
</script>
<?php
}
通过ajax传递的每个参数都接收到上面的
wpse_sendmail() 功能,但未发送电子邮件。
It always returns false. 电子邮件是
also not sending with mail() function in functions.php but working within a custom file. 我不知道出了什么问题。如果有人帮助我,我将非常感激。
SO网友:Krzysiek Dróżdż
这是不可能的。。。
在JS中,您可以这样填充数据:
var data = {
\'action\':\'send_confirmation_email\',
\'email\':\'confirm_email\',
\'key\':\'confirm_key\',
\'name\':\'display_name\',
\'id\':\'user_id\',
\'is_email\':\'true\'
};
稍后,在PHP中的AJAX回调中,您将按如下方式使用它:
wp_mail( $_REQUEST[\'email\'], $subject, $message, $headers );
因此,您尝试使用“confirm\\u email”作为收件人地址发送电子邮件。它不能也不会工作;)