自宅サーバで動かしているsymfonyのタスクがエラーになっていたのを放置していただが、そもそもエラーになったらアラートメールを送信することを試みた。
先に書いておく必要があるんだけどここでの内容はsymfony 1.3,1.4のもので、今後のバージョンで動くかはわからんです。ぐぐってさまよって辿りついた人はうすうす感じているとは思うんだけどsymfony 1.0->1.1->1.2->1.3/1.4とバージョンの度にメール送信機能はこころころ変わっている。きっと2.0でも大きく変わるに違いない。
自分もsymfony 1.2->1.4でメール送れなくなってこまった一人である。
symfony 1.4でのメール送信は以下に記載されている。
http://www.symfony-project.org/more-with-symfony/1_4/ja/04-Emails
まずsymfony 1.2とかでは外部ライブラリとしてSwiftをつかってメール送信するのがいいよ。ということで実践していたんだけどsymfony 1.4ではSwiftがsymfonyに内部に取り込まれていて1.2のやり方でやるとバージョンが違うのかなんなのかバッティングするはそんなクラスねーとか怒られるはさんざんな目に会うので、symfony 1.4ではおとなしくsymfony’s Swiftでメールを送るのが良い。
symfony 1.4だとアクションクラスやタスククラスで$this->getMailer()すればSwiftでつくられたsfMailerが取れるようになっている。
http://www.symfony-project.org/more-with-symfony/1_4/ja/13-Leveraging-the-Power-of-the-Command-Line
というわけでシンプルに済ますと
public function execute($arguments = array(), $options = array())
{
$mailer = $this->getMailer();
$mailer->composeAndSend($from, $recipient, $subject, $messageBody);
}
でメール送信できる。
しかしこれならphpの標準関数で十分なわけで、Swiftの恩恵を受けるべくメールに重要度をつけてみる。
$mailer = $this->getMailer();
$message = Swift_Message::newInstance()
->setFrom('from@example.com')
->setTo('to@example.com')
->setSubject('Subject')
->setBody('Body')
->setPriority(1)
;
$mailer->send($message);
しかし実際やってみたらGMailでは重要度は参照されないの巻。