8


0

電子メールによる通知を使用してアプリに取り組んでいます。 本番サーバーとクライアントに電子メールを送信せずにテストを実行したいのですが。 数年前、私は誰かが私たちの交換サーバーを悪い電子メールループでダウンさせていたことを思い出して、繰り返したくないと思います…​

開発者向けのセットアップについて何か提案はありますか? 現在のところ単純なSMTPサーバーがその仕事をすると思いますが、私はそのスペースに慣れていません。 サーバーに送信されたすべてのEメールを表示する機能が必要ですが、配信されることは絶対にありません。

ありがとう。

6 Answer


18


https://github.com/changemakerstudios/papercut[Papercut]は、探しているものにぴったりです。 それは過去数ヶ月間一般に公開されています。 私は一ヶ月間それを使っています。 Eメール機能をテストするのはこれ以上簡単にはできませんでした。
  1. Papercutをダウンロードしてください。

  2. 実行中にPapercutを実行すると、トレイに配置されます。

  3. アプリケーションのsmtpホストをPapercutを実行しているマシンに設定します。

  4. PapercutがEメールを受信して​​内容を表示するのを見る。

  5. 終わったら。 ペーパーカットを閉じます。


5


PostfixやSendmailのような主要なUnix / Linuxメールサーバの中の配送メカニズムを通してではなく、ファイルに配送されるエイリアスを設定するのはとても簡単です。 テスト中に、そのファイルを調整して、予想通りにメールが送信されていることを確認できます。 あなたのテストが終わった後、あなたはそれが本当に行かなければならないところにそれをリダイレクトすることができます。


1


あなたの電子メールのメカニズムが何であるかに応じて、もう一つの選択肢は提供されたすべての引数を記録してイベントタイムスタンプを持つタグテーブルにそれらをダンプするtestmail。(py、php、sh)スクリプトを作ることでしょう。 エレガントではありませんが、デバッグには役立ちます。 すべてをトリックするには、電子メールの送信方法によって異なります。

smtpを使ってsendmailを使わないのなら、同じ行に沿って、ある範囲の広いポート番号をリッスンして正しい値を返すだけの単純なghettoアプリを書いてください。


1


あなたの質問は環境を説明していませんでしたが、あなたがオブジェクト指向言語を使っているのなら(例: Java)依存性注入を使うことができます。 2つの実装を持つ MessageSender`インターフェースを書きます。一方( `EmailMessageSender)は実際にメールを送信し、もう一方(` FileMessageSender`)はメッセージを文字列でキャプチャします。

単独で `EmailMessageSender`を書いてテストしてください。確認したら、棚に置きます。

システムの他の部分を MessageSender`に対して書き、(注入された) FileMessageSender`のインスタンスを使ってそれらをテストします。 ( `FileMessageSender`でも"送信されたメッセージ "の内容を取得することが許されている場合は、それを単体テストで使用することができます。)

システムの残りの部分を確認したら、(やはりインジェクションを介して)正しく設定された `EmailMessageSender`のインスタンスを使用してシステムをデプロイします。


1


あなたは Mailtrapを使用することができます。 ステージングサーバーまたは開発サーバーでそれを設定できます。 使い方は簡単で、本番用の電子メールアドレスも使用できます。 すべての電子メールは、mailtrapの電子メールの受信トレイに閉じ込められます。 セットアップが簡単です。


0


単に電子メールリストをテキストファイルに書き出して、メールサーバーへの呼び出しを切断しないのはなぜですか。