0

メールを送信するために、symfony 1.4.8 (および ORM として Doctrine) で swiftmailer (トランスポート) を使用しています。

本が言うように、私はすべてを構成しました。

dev:
  mailer:
    class: sfMailer
    param:
      delivery_strategy: spool
      spool_class:       Swift_DoctrineSpool
      spool_arguments:   [ MailMessage, message, getSpooledMessages ]
      transport:
        class: Swift_SmtpTransport
        param:
          host: something
          port: 26
          encryption: ~
          username: something
          password: something

問題は、リアルタイム戦略を使用しているときです。メールの送信に時間がかかりすぎて、ユーザーは送信が完了するまで待つ必要があります。その後、アクションが実行され、結果が表示されます。ユーザー登録の確認メールを送信したいのですが、これが遅いと登録中にユーザーが寝てしまいます。

また、スプール戦略も使用できません。タスクと一緒に手動で送信する必要があるため (そうですか?)、それもできません。登録後に自動的に送信されるはずだからです。

では、この状況に対する戦略はありますか? これは、メールを送信するのに十分な速さです (送信されるまで待つ必要はありません)。

4

1 に答える 1

0

私はリアルタイム戦略を使用して電子メールを送信し、時には何百ものループで送信します。メールは、特にシーケンスの早い段階で送信されると、比較的迅速に送信されます。

次の手法を使用しました。

  • Gmail と SSL 暗号化
  • API を介した SendGrid
  • 電子メールを送信するタスクによってスイープされる電子メール トランザクション テーブルを使用する独自の API。

私の経験では、1 通の確認メールが非常に便利です。そうでない場合は、そのトランザクションをデバッグしてボトルネックがどこにあるかを確認する他の (コマンドライン) 方法を探します。PHP、Symfony、または Swift ではないかと思います。

于 2011-12-28T14:47:37.360 に答える