Xampp本地运行的Wordpress无法使用Mailtrap发送测试邮件如何解决
Mac OS XAMPP环境WordPress使用Mailtrap发信失败解决方案
先处理Apache日志报错
两个日志报错本身不是直接导致发信失败的原因,优先做基础修复:
- AH00169: caught SIGTERM, shutting down:属于Apache进程被强制终止的残留日志,大概率是之前运行脚本触发了进程崩溃,先直接重启XAMPP的Apache服务即可清空该错误,后续测试如果不再复现就不需要额外处理。
- AH01906: localhost:443:0 server certificate is a CA certificate:是本地自签名HTTPS证书的提示,完全不影响SMTP发信功能,如果不需要本地HTTPS可以直接用HTTP访问站点测试,也可以修改Apache的SSL配置文件关闭证书警告。
修正Mailtrap SMTP配置
你当前functions.php中的配置缺少加密规则、本地SSL验证豁免的参数,这是发信失败的核心原因,替换成如下代码即可:
function mailtrap($phpmailer) { $phpmailer->isSMTP(); $phpmailer->Host = 'smtp.mailtrap.io'; $phpmailer->SMTPAuth = true; $phpmailer->Port = 2525; $phpmailer->Username = '***-cd4b'; // 替换为你自己的Mailtrap用户名 $phpmailer->Password = '***-239a'; // 替换为你自己的Mailtrap密码 // 新增加密规则配置 $phpmailer->SMTPSecure = 'tls'; $phpmailer->SMTPAutoTLS = false; // 本地环境豁免SSL证书验证 $phpmailer->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) ); } add_action('phpmailer_init', 'mailtrap');
调整测试脚本逻辑
你单独创建的测试PHP文件如果没有加载WordPress核心,wp_mail函数会直接不存在导致调用失败,修改测试文件代码如下:
// 开头先引入WordPress核心,路径替换为你站点wp-load.php的实际物理路径 require_once dirname(__FILE__) . '/wp-load.php'; // 原有发信逻辑 $to = "benviat@gmail.com"; $subject = 'my subject'; $message = 'I would like to work with you'; $headers[] = 'From: Ben<bviatte@gmail.com>'; $sent_message = wp_mail( $to, $subject, $message, $headers); var_dump($sent_message); if ( $sent_message ) { echo 'The test message was sent. Check your email inbox.'; } else { // 新增错误输出,方便定位后续问题 global $phpmailer; echo 'The message was not sent. Error info: ' . $phpmailer->ErrorInfo; }
如果修改后还是提示连接失败,可以尝试把SMTP端口从2525换成Mailtrap支持的587、465端口重试,排除本地端口拦截的问题。
内容的提问来源于stack exchange,提问作者Ben Viatte
相关产品推荐
相关产品推荐

