通过SMTP服务器来发送邮件,同时将发送任务放入Action Scheduler队列。
function izs_on_wp_mail($attrs) {
$attrs['source'] = 'action-scheduler';
return $attrs;
}
function izs_on_do_send_mail($attrs) {
add_filter( 'wp_mail', 'izs_on_wp_mail', 10, 1 );
wp_mail( $attrs['to'], $attrs['subject'], $attrs['message'], $attrs['headers'] ?? '', $attrs['attachments'] ?? [] );
remove_filter( 'wp_mail', 'izs_on_wp_mail' );
}
add_action( 'izs_do_send_mail', 'izs_on_do_send_mail', 10, 1 );
// 将邮件放入队列
add_filter( 'pre_wp_mail', function ($return, $attrs) {
if ($return != null) {
return $return;
}
if (isset($attrs['source']) && $attrs['source'] === 'action-scheduler') {
unset($attrs['source']);
return null;
}
$result = as_schedule_single_action( time(), 'izs_do_send_mail', [$attrs], 'izs-seo' );
return $result > 0;
}, 10, 2 );
// 使用SMTP发送邮件
function izs_on_phpmailer_init(\PHPMailer\PHPMailer\PHPMailer $mailer) {
$mailer->isSMTP();
$mailer->Host = '这里是邮箱服务器地址';
$mailer->SMTPAuth = true;
$mailer->SMTPSecure = true;
$mailer->Port = 465;
$mailer->Username = '这里是SMTP账号';
$mailer->Password = '这里是SMTP密码';
$mailer->setFrom('这里是发送人邮箱地址', '这里是发送人备注');
return $mailer;
}
add_filter('phpmailer_init', 'izs_on_phpmailer_init', 10, 1 );
发表回复