Cakephpのメール送信設定

開発環境で利用しているメール送信方法はGmailのsmtpとsendmane

Cakephp側のメール送信プラグラムはEmailComponentが便利

EmailComponent + Gmailのsmtpサーバ
EmailComponent + sendmane(sendまね~る)

上の2つのメール送信方法を利用している。

Gmailのsmtpサーバは設定が非常に簡単であるが、送信スピードに時間がかかる。開発効率という点でマイナスかもしれないが、多く利用されている方法の一つであることは間違いない。

sendmaneは、windows上で利用できるsendmail模倣メール送信プログラムで、初期設定時に外部のsmtpサーバを指定することでメール送信を行うことが可能になる。smtp次第ではあるが、送信に時間がかかることもなく効率的に開発作業を進めることができる。

それぞれの場合の利用方法を書いてみようと思う。

Gmail smtpサーバ

いずれの場合もEmailComponentを有効にしておかないといけない。

public $components = array( 'Email' );

Controllerで上のように指定すれば有効になる。

$this->Email->smtpOptions = array(
               'port'=>'465',
               'timeout'=>'30',
               'host' => 'ssl://smtp.gmail.com',
               'username'=>'your-email@gmail.com',
               'password'=>'password'
);
$this->Email->delivery = 'smtp';

$this->Email->to = mb_convert_encoding("your-email@gmail.com", "JIS", "utf-8");
$this->Email->from = $this->request->data['Contact']['email'];
$this->Email->subject = mb_convert_encoding($this->request->data['Contact']['title'], "JIS", "utf-8");
$this->Email->language = 'Japanese';
$this->Email->charset  = 'ISO-2022-JP';
$this->Email->lineLength = 1024;
$this->Email->replyTo  = $this->request->data['Contact']['email'];

if(!$this->Email->send(mb_convert_encoding($this->request->data['Contact']['body'], "JIS", "utf-8")))
{
	$this->Session->setFlash('送信できませんでした'.$this->Email->smtpError);
}

else
{
	$this->render('/Elements/Ajaxs/ajaxupdated_contact', 'ajax');
}

smtpOptionsとdeliveryとしてsmtpを指定しているところがポイントで、smtpサーバを利用して送信しようとしているのが上のやり方。

シチュエーションとしては、Ajaxメールフォームからユーザーが自分のメールアドレスと問い合わせ内容を入力し、その送信内容がyour-email@gmail.comに送られてくるという状況を想定している。

sendmane

sendmane.exeを利用してメール送信を行う場合には、Gmailの項で掲載したコードの以下の部分を

$this->Email->delivery = 'smtp';

下のように変更する

$this->Email->delivery = 'mail';

この設定によりsmtpサーバではなく、メール送信プログラム(sendmane)を利用してメール送信を行うということになり、smtpoptionは無視される。

sendmaneを利用する場合には、

・php.iniでsendmaneを利用するための設定
・sendmane自体の利用設定

が必要になる。

php.iniに以下の一行を追記する

;sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"
sendmail_path ="C:\sendm\sendmane.exe -t -i"

追記する場所は

[mail function]

のエリアになる。

xampp1.8.1の場合、標準でmailtodisk.exeというパスが有効になっているのでそちら側をコメントアウトした上で上の一行を追記する。php.iniを編集したらapacheの再起動が必要になる。

sendmaneの設定は以下のページが最も総合的で分かりやすい

https://xoops.hypweb.net/modules/mydownloads/viewcat.php?cid=1

プロバイダやホスティングサービスのsmtpサーバの接続情報を元に設定することになる。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Cakephpのメール送信設定の記事にコメントを投稿