PHPMailer默认配置SMTP

时间:2013-01-10 07:57:49

标签: php smtp phpmailer

我知道如何在PHPMailer中使用SMTP:

$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默认使用这些设置,以便每次我想发送邮件时都不必指定它们?

3 个答案:

答案 0 :(得分:14)

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

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()。

答案 1 :(得分:2)

  

我是否可以只编辑class.phpmailer.php文件?

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

答案 2 :(得分: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类。