Tuesday, March 22, 2011

Zend_Mail 利用 GMail 發信

基本上與 PHPMailer 利用 GMail 發信 一模一樣的操作,只是換個工具,從 PHPMailer 換成 Zend Framework 提供的 Zend_Mail 物件實做。操作一樣是不需要去設定 php.ini 內的 sendmail 以及 port,完全跟現行的系統平台切割。

環境準備

假設您已經具備 Zend Framework 專案環境

操作流程

1. 引用 Zend_Mail_Transport_Smtp 物件
require_once 'Zend/Mail/Transport/Smtp.php';
我們將用到 Zend_Mail_Transport_Smtp 以及 Zend_Mail 兩個物件。

2. 建立 Mail.php 放置寄信的主程式
class Ncku_SystemMail
{
    // 將用來儲存 Zend_Mail 實例 
    protected $mail;
 protected $authDetail = array(
  'ssl' => 'ssl',
  'port' => 465,
  'auth' => 'login',
  'username' => 'yourusername@gmail.com',
  'password' => 'yourpassword'
 );
    
 public function __construct() {
    // 設定 SMTP Authentication  
    $transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $this->authDetail);
  Zend_Mail::setDefaultTransport($transport);
    // 建立 Zend_Mail   
    $this->mail = new Zend_Mail();
  $this->init();
 }
}

3. 撰寫寄信主程式 init()
public function init(){
     $this->mail->setBodyText('This is the text of the mail.');
    $this->mail->setFrom('yourusername@gmail.com', 'Some Sender');
    $this->mail->addTo('someone@gmail.com', 'Some Recipient');
    $this->mail->setSubject('TestSubject');
    $this->mail->send();
}

如何使用上述建立好的寄信程式?

new Mail();
建立物件實體即可,它就會盡信到您所設定的信箱囉。

谷歌 SMTP 設定

如上程式碼內所示,主要有以下參數
SMTP: smtp.gmail.com
Port: 465
SSL: ssl

Referecne

[1.] Zend 官方網站::SMTP Authentication
[2.] 寶尼::PHPMailer 利用 GMail 發信

No comments:

Post a Comment