10

我知道如何将 SMTP 与 PHPMailer 一起使用:

$mail             = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Host       = "mail.yourdomain.com"; // sets the SMTP server
$mail->Username   = "yourname@yourdomain"; // SMTP account username
$mail->Password   = "yourpassword";        // SMTP account password

它工作正常。但我的问题是:

如何配置 PHPMailer 以默认使用这些设置,这样我每次发送邮件时都不必指定它们?

4

3 回答 3

18

创建一个函数,并包含/使用它。

function create_phpmailer() {
  $mail             = new PHPMailer();
  $mail->IsSMTP(); // telling the class to use SMTP
  $mail->SMTPAuth   = true;                  // enable SMTP authentication
  $mail->Host       = "mail.yourdomain.com"; // sets the SMTP server
  $mail->Username   = "yourname@yourdomain"; // SMTP account username
  $mail->Password   = "yourpassword";        // SMTP account password
  return $mail;
}

并调用 create_phpmailer() 创建一个新的 PHPMailer 对象。

或者你可以派生你自己的子类,它设置参数:

class MyMailer extends PHPMailer {
  public function __construct() {
    parent::__construct();
    $this->IsSMTP(); // telling the class to use SMTP
    $this->SMTPAuth   = true;                  // enable SMTP authentication
    $this->Host       = "mail.yourdomain.com"; // sets the SMTP server
    $this->Username   = "yourname@yourdomain"; // SMTP account username
    $this->Password   = "yourpassword";        // SMTP account password
  }
}

并使用新的 MyMailer()。

于 2013-01-10T08:08:21.883 回答
2

我不能只编辑 class.phpmailer.php 文件吗?

最好不要自己编辑类文件,因为这会使代码更难维护。

于 2016-01-29T15:08:26.663 回答
0

你也可以使用这个钩子:

 /**
     * Fires after PHPMailer is initialized.
     *
     * @since 2.2.0
     *
     * @param PHPMailer &$phpmailer The PHPMailer instance, passed by reference.
     */
    do_action_ref_array( 'phpmailer_init', array( &$phpmailer ) );

从wp_mail函数本身的源码直接修改phpmailer类。

于 2016-03-08T13:41:40.753 回答