我尝试使用wp_mail()函数通过wordpress发送电子邮件,但它似乎无法正常工作。
它在Chrome'网络'中显示0
响应
与
Status Code:200 OK
这是我的代码部分:
// Contact form Ajax
add_action('wp_ajax_nopriv_submit_contact_form', 'submit_contact_form');
function submit_contact_form(){
if(isset($_POST['email'])) {
$email = $_POST['email'];
$email_to = "info@company.com";
$host = "ssl://smtp.gmail.com:465";
$username = 'myEmail@company.pro';
$password = 'passpass';
$email_subject = "You have a new email from $email via company.com website";
$message = $_POST['text'];
$headers = array ('From' => $email, 'To' => $email_to,'Subject' => $email_subject);
/*$smtp = Mail::factory('smtp',
array ('host' => $host,
'auth' => true,
'username' => $username,
'password' => $password));*/
//$mail = $smtp->send($email_to, $headers, $message);
wp_mail( $email_to, $email_subject, $message );
/*if (PEAR::isError($mail)) {
echo($mail->getMessage());
} else {
echo("Message successfully sent!\n");
}*/
}
}
error_reporting(E_ALL);
ini_set("display_errors", 1);
哪个部分可能出错?
答案 0 :(得分:1)
我会将此作为正式答案发布:
你应该检查两件事:
1)响应为0,因为您没有返回任何内容。你应该返回一个ajax响应,通常json_encoding你的请求这样有帮助:
if(wp_mail($email_to,$email_subject,$message)) {
echo json_encode(array("result"=>"complete"));
} else {
echo json_encode(array("result"=>"mail_error"));
}
wp_die();`
2)并非所有wordpress / server配置都允许默认的Wordpress wp_mail函数发送邮件。当然,当在本地(主机)服务器上进行测试时,许多ISP会阻止默认的外发邮件流量(在另一个问题中,我注意到你正在使用SMTP邮件功能)。有时阻塞会继续进行,因此看起来一切正常,但邮件永远不会被发送。有助于安装WP Mail SMTP plugin(或类似),以便您可以配置外发SMTP服务器(使用或不使用身份验证)。