当我使用wp_mail()
或mail()
函数在AJAX中,该函数不起作用,也不发送电子邮件。
当我只在函数中使用这些函数时。php文件它工作正常。
它与WordPress函数或操作无关。我已经检查了一切,包括使用SMTP邮件。SMTP邮件的工作原理与mail()
函数,它不会以AJAX模式发送。
这是我的职能。php文件内容:
add_action( \'phpmailer_init\', \'wpse8170_phpmailer_init\' );
function wpse8170_phpmailer_init( PHPMailer $phpmailer ) {
$phpmailer->Host = \'godadysmtpsampledomain.secureserver.net\';
$phpmailer->Port = 465; // could be different
$phpmailer->Username = \'[email protected]\'; // if required
$phpmailer->Password = \'12345\'; // if required
$phpmailer->SMTPAuth = true; // if required
$phpmailer->SMTPSecure = \'ssl\'; // enable if required, \'tls\' is another possible value
$phpmailer->IsSMTP();
}
// This code works fine;
wp_mail("[email protected]", "test", "test");
但是AJAX模式下的其他代码或插件,如Contact Form 7不起作用,这意味着电子邮件无法送达。我检查了这些插件
wp_mail()
返回true,但电子邮件未送达。
SO网友:Hossein Hashemi
@T、 托多瓦:
好吧,当我用你的方式时,它不会发送电子邮件。它在Ajax功能中不发送电子邮件,这正是我的问题
add_action( \'wp_ajax_ABCABCABC\', \'wpse8170_phpmailer_init\' );
function wpse8170_phpmailer_init() {
//it doesn\'t send/deliver in a Ajax function
wp_mail("[email protected]", "test", "test");
}
但当我在post back page中使用wp\\u mail()时,它可以很好地工作,例如,将其放入函数中。它发送/传递电子邮件的php文件:
//functions.php
//It sends in this mode
wp_mail("[email protected]", "test", "test");
这是我的问题。
SO网友:Diego Somar
为时已晚,但也许可以帮助别人。我不建议在代码中更改SMTP数据,因为:
SMTP连接数据是可变的。如果您在localhost上工作,可能需要发送测试电子邮件(例如使用mailcacher). 在这种常见情况下,您将有2个SMTP数据,并且在将文件发送到生产服务器时可能会混淆出于安全原因,建议不要在代码中输入密码。如果您在项目中与许多人合作,它将共享您的密码有一个很好的解决方案可以更改SMTP数据。是轻量级插件Easy WP SMTP. 使用此插件,您可以在Wordpress数据库中设置SMTP数据。
由于每个环境都有自己的数据库(生产服务器、dev 1、dev 2等),因此可以在使用的每个WP Admin中设置SMTP数据。
在生产服务器中,设置真正的SMTP。在开发服务器(localhost)中,可以设置测试SMTP数据。
SO网友:T.Todua
这是什么?
add_action( \'phpmailer_init\', ...........
您应该使用:
add_action( \'wp_ajax_ABCABCABC\', \'wpse8170_phpmailer_init\' );
function wpse8170_phpmailer_init() { ....... }
在JAVASCRIPT调用中,执行以下操作:
<script type="text/javascript" >
jQuery(document).ready(function($) {
var data = {
\'action\': \'ABCABCABC\',
\'whatever\': 1234
};
jQuery.post(ajaxurl, data, function(response) {
//alert(\'Response got!! : \' + response);
});
});
</script>
(
source).