symfony 1.4でアラートメールを送信する

自宅サーバで動かしている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では重要度は参照されないの巻。

人見知りソフトウェアエンジニアです。ビジュアル系、お笑い、Pixarが好き。勢いで吉本超合金おたけびBOTを作った。オールザッツ漫才が放送されない東京在住。

趣味や日常からアウトプットの場としてブログを書いています。自作のWordPressプラグインにGitHub Flavored MarkdownAmazonJSなど。