SwiftMailerでメール送信(gmail)
添付ファイルのメールを送信しています。
$message = $this->getMailer()->compose( 'from@example.com', 'to@example.com', 'Subject is here.', 'Body is here.' )->attach( Swift_Attachment::fromPath('/var/www/tmp/image.jpg') ); $this->getMailer()->send($message);
いっぺんにセンドしてしまうこともできます。
$message = $this->getMailer()->composeAndSend( 'from@example.com', 'to@example.com', 'Subject is here.', 'Body is here.' )->attach( Swift_Attachment::fromPath('/var/www/tmp/image.jpg') );
gmailで送るには/apps/frontend/config/factories.ymlに設定します。
dev: mailer: param: transport: class: Swift_SmtpTransport param: host: smtp.gmail.com port: 465 encryption: ssl username: username password: password
gmailのsmtpコネクションに多少時間がかかります。symfonyやphpエンジンが遅いわけではないと思います。exim4のスマートホスト・sendmailで送るといいでしょう。
日本語のメールは上記では化けてしまうので(タイトル・本文) 文字化けしないように色々と自分で実装できるのですが、色々とややこしいのでkzl_Jp_Swift_Messageをお借りします。
http://www.kuzilla.co.jp/article.php/20100301symfony
PluginはDownloadしてplugins Directoryで解凍し
/config/ProjectConfiguration.class.phpのpublic function setup()内に下記の一行を追加します。
$this->enablePlugins('kzlJpSwiftMailerPlugin');
メールを送信する手順は下記のとおりです。
$message = kzl_Jp_Swift_Message::newInstance(); $message->setFrom('from@example.com'); $message->setTo('to@example.com'); $message->setSubject('日本語のタイトルでも大丈夫です'); $message->setBody('日本語の本文です。'); $message->attach( Swift_Attachment::fromPath('/var/www/tmp/image.jpg') ); $this->getMailer()->send($message);
jpMailPluginを使う方法もありますがkzl_Jp_Swift_Messageがたぶん一番楽ちんです。ちょっと名前が長いので覚えられないな。kzl... 自分で実装するとなるとタイトルのエンコードが多少ややこしいです。いつか自分用ライブラリ書くことにする。