CakePHP GmailのSMTPからメールを送信する

notoです。

標準のmail関数が使えない環境の場合でもメールが送りたい!って方や、文字化けに悩まされたくない!って方はqdmail.phpとqdsmtp.phpを利用したら幸せになれる気がします。 ということで、今回はその使い方です。

環境

  • CakePHP1.3.12
  • CentOS5.7
  • PHP5.3.6

ダウンロード

Qdmail : 高機能日本語PHPメール送信ライブラリQdmail ダウンロードはコチラから

Qdsmtp : Qdsmtp-Simple SMTP Mailer for PHP ダウンロードはコチラから

配置

ダウンロード後、qdmail.phpとqdsmtp.phpを/app/controllers/components/に配置します。

メール送信

Qdmailをコンポーネントとして利用するには、通常のコンポーネントを利用するのと同様$componentsプロパティにセットします。

1
2
3
4
5
6
7
8
9
10
11
12
<?php

class MailsController extends AppController {


    /**
     * コンポーネント
     * @var array $components
     */
    public $components = array(
        'Qdmail'
    );

今回は外部のSMTPサーバーを利用するので、QdmailにGmailのSMTPサーバーを利用するよと教えてあげます。 GmailのSMTPパラメータは下述の「user」と「pass」を変更すれば、そのまま利用できるはずです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
 * SMTPパラメータ
 */
var $smtp = array(
    'host'     =>'ssl://smtp.gmail.com',
    'port'     =>465,
    'from'     =>'username@gmail.com',
    'protocol' =>'SMTP_AUTH',
    'user'     =>'username@gmail.com',
    'pass'     => 'password',
);


/**
* テストメール送信
*/
public function testMail(){

    $this->layout = false;

    //外部のSMTPサーバーを利用する。
  $this->Qdmail->smtp(true);

  //SMTPサーバーの設定をセット
    $this->Qdmail->smtpServer($this->smtp);

    $this->Qdmail->to(to@example.com, '宛先名');
    $this->Qdmail->subject('件名');
    $this->Qdmail->from('from@example.com', '差出人名');
    $this->Qdmail->text('本文');

    //送信
    $this->Qdmail->send();
}

http://localhost/mails/testMailにアクセスし、指定したメールアドレスの受信箱を覗いてメールが届いていればOKです。

補足

本文を改行したい場合は、PHP_EOLを改行したい個所に連結させてあげます。

1
$this->Qdmail->text('1行目' . PHP_EOL . '2行目');

Comments