WordPress主题开发,如何修改自带的邮件发送功能?

2023-02-17 14:56:07 浏览数 (1)

今天收到两条评论,发现没有收到邮件通知,转念一想自己也没设置过邮件相关的配置,查了一下文档发现wordpress是通过wp_mail函数发送邮件的。

源码分析

打开wordpress源码文件 wp-includespluggable.php,定位到wp_mail函数:

代码语言:javascript复制
<?php
 
//255行代码如下
global $phpmailer;

// (Re)create it, if it's gone missing.
if ( ! ( $phpmailer instanceof PHPMailerPHPMailerPHPMailer ) ) {
    require_once ABSPATH . WPINC . '/PHPMailer/PHPMailer.php';
    require_once ABSPATH . WPINC . '/PHPMailer/SMTP.php';
    require_once ABSPATH . WPINC . '/PHPMailer/Exception.php';
    $phpmailer = new PHPMailerPHPMailerPHPMailer( true );

    $phpmailer::$validator = static function ( $email ) {
        return (bool) is_email( $email );
    };
}

看到了熟悉的PHPMainler。https://github.com/PHPMailer/PHPMailer ,继续往下:

代码语言:javascript复制
<?php

//第467行代码
// Set to use PHP's mail().
$phpmailer->isMail();->isMail();

通过IDE追溯一下isMail,PHPMailer类如下:

代码语言:javascript复制
<?php 
/**
 * Send messages using SMTP.
 */
public function isSMTP()
{
    $this->Mailer = 'smtp';
}

/**
 * Send messages using PHP's mail() function.
 */
public function isMail()
{
    $this->Mailer = 'mail';
}

由此可知worpdress使用的是php自带的mail函数,继续拓展一下:

1.PHP Mail 简介

  • mail() 函数允许您从脚本中直接发送电子邮件。
  • 要使邮件函数可用,PHP 需要已安装且正在运行的邮件系统。要使用的程序是由 php.ini 文件中的配置设置定义的。
  • Mail 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。
  • Mail 函数的行为受 php.ini 文件中的设置的影响。

我的PHP压根就没配置过这些玩意,理所当然,邮件发不出,但是讲道理,为什么不提供一个错误日志或者干脆抛致命错误

0 人点赞