CakePHP

CakePHPにはSMTPをサポートするメールライブラリが付属しています。詳細についてはCakePHP documentation pageを参照してください。 以下の例ではHTMLとテキストBodyのメールを送信する方法を示します。

app/views/layouts/ 内でテキストとHTMLメールの定義を行います:

1
2
3
4
5
email/
html/
default.ctp
text/
default.ctp

app/views/layouts/email/text/default.ctp に以下を追加します:

1
<!--?php echo $content_for_layout; ?-->

また app/views/layouts/email/html/default.ctp に以下を追加します:

1
<!--?php echo $content_for_layout; ?-->

その後、メールのテンプレートを作成します。この例では、以下の構成でメールによる登録のテンプレートを作成します:

1
2
3
4
5
6
7
8
app/
views/
elements/
email/
text/
registration.ctp
html/
registration.ctp

app/views/elements/email/text/registration.ctp に以下を追加します:

1
2
Dear <!--?php echo $name ?-->,
Thank you for registering. Please go to http://domain.com to finish your registration.

また app/views/layouts/email/html/default.ctp に以下を追加します:

1
2
Dear <!--?php echo $name ?-->,
Thank you for registering. Please go to <a href="http://domain.com">here</a> to finish your registration.

コントローラ内でメールコンポーネントを有効化します:

1
<!--?php var $components = array('Email'); ?-->

コントローラ内の任意の場所で以下のようにメール送信を行うことができます(必ず sendgrid_api_key を自分のものに置き換えてください):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$this->Email->smtpOptions = array(
  'port'=>'587',
  'timeout'=>'30',
  'host' => 'smtp.sendgrid.net',
  'username'=>'apikey',
  'api_key'=>'sendgrid_api_key',
  'client' => 'yourdomain.com'
);

$this->Email->delivery = 'smtp';
$this->Email->from = 'Your Name ';
$this->Email->to = 'Recipient Name ';
$this->set('name', 'Recipient Name');
$this->Email->subject = 'This is a subject';
$this->Email->template = 'registration';
$this->Email->sendAs = 'both';
$this->Email->send();
?>