symfonyからmailを送る

symfonyバッチ処理を行う場合はタスクを使う。

symfony generate:task hoge:fuga

で lib/task 以下に、hogeFugaTask.class.phpが作成される。このテンプレートを編集する。
タスクを実行する際は、

symfony hoge:fuga

で実行できる。


メールを送るタスクのサンプル。

addOptions(array(
      new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name'),
      new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
      // add your own options here                                                                                    
    ));

    $this->namespace        = 'hoge';
    $this->name             = 'fuga';
    $this->briefDescription = '';
    $this->detailedDescription = <<getMailer();
    $message = Swift_Message::newInstance()
      ->setFrom('hoge@example.com')
      ->setTo('fuga@example.com')
      ->setSubject('test')
      ->setBody('test test');
    $mailer->sendNextImmediately()
      ->send($message);
  }
}


エラーが出たのでめも。

Connection could not be established with host localhost [Connection refused #61] 

これは、smtpサーバが上がっていないため。
試している環境がmacだったので、

sudo postfix start

で、smtpサーバを起動する。smtpサーバがあがってるかどうかは、

telnet localhost 25

のようにtelnetで接続してみると確認できる。
linuxなどでは、postfixをインストールするなり、sendmailの設定をいじるなりする必要がありそう。

ここまでいじって、ようやくメールが送信されたことを確認。


TODO?

  • 日本語を送ってみる、jpMailプラグインを試すかも
  • sfEmailプラグインを試すかも
  • jpMailとsfEmailは同時に使えるか?


以下、参考にしたページのめも
symfony 1.x legacy website
symfony1.2でカスタムタスクを作成してみる - アシアルブログ
symfonyのjpMailPlugin(メール送信プラグイン)の使い方のまとめ - アシアルブログ
dfltweb1.onamae.com – このドメインはお名前.comで取得されています。
symfony 1.x legacy website
Macで開発用SMTPサーバを立てたい - 英語とプログラミング気まぐれ日記