PHPMailer 5.2.x - 集中设置 PHPMailer SMTPAuth 凭据

PHPMailer 5.2.x - Centrally set PHPMailer SMTPAuth credentials

我们继承了一个较旧的 PHP 应用程序。这是一个以奇怪的风格编码的在线商店应用程序。每个邮件程序都已动态编码到响应式 PHP 文件中。有很多文件可以保存发送邮件的代码。 问题是,新的网络服务器使用邮件服务器,要求 SMTPAuth 接受邮件发送。该代码不提供任何 SMTPAuth 凭据,因为以前的托管没有使用它。

脚本正在使用 PHPMailer。 我的问题是,是否有任何方法可以集中设置 SMTPAuth 凭据(主机、用户名、密码),PHPMailer 在发送邮件时始终自动使用这些凭据?

我不想触及外部代码并更改每个脚本,因此它使用 SMTPAuth,例如:

$mail->IsSMTP = true;
$mail->Host = "blah";
$mail->Username = "xxx";

等等。 我希望我的意图很明确。有问题请追问

我已经解决了

只需设置 public 变量的 class.phpmailer.php 中的值:

$Mailer // to "smtp"
$Host // to the mail host
$SMTPAuth // to true
$Username // to the mail accounts username
$Password // to the mail accounts password

就这些了。

不要编辑原始文件 - 否则当您更新 PHPMailer 时,您的代码将中断 - 改为子类化,如下所示:

class myMailer extends PHPMailer {
    public function __construct($debug = false) {
        parent::__construct($debug);
        $this->Username = 'username';
        $this->Password = 'password';
        $this->isSMTP();
        $this->SMTPAuth = true;
    }
}

然后在需要实例时使用它,而不是说

$mail = new PHPMailer;

$mail = new myMailer;

这种方法是您应该始终使用库的方式;它不是 PHPMailer 特有的。