2015-05-18 68 views
0

我們繼承了一個較老的PHP應用程序。這是一個網上商店應用程序編碼的怪異風格。每個郵件程序都被編碼到響應式PHP文件中。有很多文件可以保存代碼發送郵件。 問題是,新的網絡服務器使用一個郵件服務器,它要求SMTPAuth接受發送郵件。該代碼不提供任何SMTPAuth憑據,因爲前託管沒有使用它。PHPMailer 5.2.x - 集中設置PHPMailer SMTPAuth憑證

腳本正在使用PHPMailer。 我的問題是,如果有任何方法可以集中設置SMTPAuth憑證(主機,用戶名,密碼),PHPMailer會在發送郵件時自動使用它嗎?

我不想觸及外來代碼並改變每個腳本,以便它使用SMTPAUTH像:

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

等。 我希望我的意圖很明確。請詢問是否有問題。

回答

1

不要編輯原始文件 - 否則,當你更新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; 

這種方法是你如何應該總是使用鋰braries;它並不特定於PHPMailer。

+1

謝謝Synchro。完成了! 現在我必須編輯發送郵件的每個PHP模板。但它更好的方式。 –

0

我解決了它。

只需設定值,在公衆瓦爾的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 

這就是全部。

+0

不要這樣做;你永遠不需要編輯庫的內容。 – Synchro