用户查询循环中wp_mail函数无法发送邮件问题排查
问题描述
尝试给所有超过1年未登录的用户(基于WooCommerce数据库元值wc_last_active)发送邮件,但邮件无法发出。测试阶段添加了仅给自己发邮件的过滤代码(测试后会删除)。我们使用带邮件队列的SMTP服务,且wp_mail在其他类似代码中可正常工作。
更新说明
- 已根据首次回答更新代码,但问题仍未解决。
- 前端测试显示查询正常,
$to变量能正确获取我的邮箱地址。 - 已添加
ini_set("display_errors",1); error_reporting(E_ALL);代码但未捕获到任何错误。 - 删除过滤代码并手动设置
$to为我的邮箱后,邮件仍无法发出。
测试代码
function my_notifyOldUsers() { global $wpdb; $query = $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE ( meta_key='wc_last_active' AND DATE_ADD(FROM_UNIXTIME(meta_value), INTERVAL 1 DAY) > NOW() )"); //will be 365 DAY and "<" after testing $oldusers = $wpdb->get_results($query, ARRAY_N); require_once( ABSPATH.'wp-admin/includes/user.php' ); foreach ($oldusers as $olduser) { $user = get_userdata( $olduser[0] ); $user_azonosito = $user->ID; //this line will be deleted after testing if( $user_azonosito == 4210 ) { //this line will be deleted after testing, ID 4210 is myself $headers = array( 'Content-Type: text/html; charset=UTF-8', 'From: Vidéki Vendégházak <videkivendeghazak@gmail.com>' ); $to = $user->user_email; $subject = "Fiókod hamarosan törlésre kerül"; $body = "<p style='font-size: 16px; margin-bottom: 20px;'>Kedves Szállásadó!</p><p style='font-size:14px; margin-bottom: 20px;'>A <a href='https://videkivendeghazak.hu'>Vidéki Vendégházak oldalon</a> felhasználói fiókod 30 nap múlva <b>automatikus törlésre kerül minden általad létrehozottt tartalommal együtt.</b></p><p style='font-size:14px; margin-bottom: 20px;'>Amennyiben nem szeretnéd, hogy fiókod törlésre kerüljön, úgy a következő 30 napon belül lépj be felhasználói fiókodba <a href='https://videkivendeghazak.hu/fiokom'>ezen a linken keresztül.</a></p><p style='font-size:14px;'>Üdvözlettel: a Vidéki Vendégházak csapata</p>"; wp_mail( $to, $subject, $body, $headers ); } } }
内容的提问来源于stack exchange,提问作者Attila Sotus
相关产品推荐
相关产品推荐

