Hatena::ブログ(Diary)

あんこの成長記録

2010-10-28

symfonyからmailを送る

03:01

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

symfony generate:task hoge:fuga

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

タスクを実行する際は、

symfony hoge:fuga

で実行できる。


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


class hogeFugaTask extends sfBaseTask
{
  protected function configure()
  {
    $this->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 = <<<EOF
The [hoge:fuga|INFO] task does things.
Call it with:

  [php symfony hoge:fuga|INFO]
EOF;
  }

  protected function execute($arguments = array(), $options = array())
  {
    // add your code here                                                                                             
    $mailer = $this->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

symfony1.2でカスタムタスクを作成してみる - アシアルブログ

symfonyのjpMailPlugin(メール送信プラグイン)の使い方のまとめ - アシアルブログ

no title

- Symfony

Macで開発用SMTPサーバを立てたい - 英語とプログラミング気まぐれ日記

Connection: close