webdevqa.jp.net

.netを使用したSMTPのテスト

電子メールを送信するWebサイトをテストするためにSMTPサーバーを構成する必要があります(登録確認など)。

実際にメールを送信したくないので、コードが正しいことを確認したいだけです。たとえば、メールがキューフォルダーに配置されていることを確認できるようにしたいと思います。

誰でも簡単に設定できるSMTPサーバーを推奨できますか?

52

Papercut もあります。これは、メッセージを受信するがどこにも配信しないSMTPサーバーです(メッセージが正しく送信されていることを確認できます)。受信したメッセージは小さなGUIに表示され、ディレクトリにも書き込まれます。

41
Sean Carpenter

.NETでは、SmtpClientをピックアップディレクトリに配置することで電子メールを送信するように構成できます。

SmtpClientのデフォルトコンストラクターはapp.configから設定を取得するため、テスト環境では次のように構成できます。

<configuration>
    <system.net>
        <mailSettings>
            <smtp deliveryMethod="specifiedPickupDirectory">
                <specifiedPickupDirectory pickupDirectoryLocation="path to a directory" />
            </smtp>
        </mailSettings>
    </system.net>
</configuration>

MSDNリファレンス-app.config mailSettings要素 http://msdn.Microsoft.com/en-us/library/w355a94k.aspx

29
Lachlan Roche

smtp4dev プロジェクトは、別のダミーSMTPサーバーです。メッセージをログに記録し、最近のメッセージの内容を表示できる素敵でシンプルなUIがあるので、気に入っています。 MSIインストーラーを使用してC#で記述されています。ソースコードが利用可能です。

20
Don Kirkby

.NETの人にとっては。シンプルに保つ。

私たちはこれを調べていたところ、開発者の1人が、電子メールの送信方法をオーバーライドできる構成設定について覚えていました。

これにより、メールごとにファイルが作成され、そのままになります。

<system.net>
    <mailSettings>
      <smtp deliveryMethod="SpecifiedPickupDirectory">
        <specifiedPickupDirectory pickupDirectoryLocation="\\SharedFolder\MailDrop\" />
      </smtp>      
    </mailSettings>
  </system.net>
8
argatxa

私はブログの投稿 。NETのシンプルなSMTPサーバーモック が必要なものを提供すると思います:SMTPサーバーモック

SMTPサーバーモックは、基本的には偽のSMTPサーバーであり、電子メールメッセージを送信するアプリケーションの単体テストに使用できます。

また、 smtp mock serverのGoogle検索 を使用すると、テスト用のSMTPサーバーを選択できます。お気に入り:

7
f3lix

これを行う別の方法は、同じインターフェースを実装するSmtpClientのラッパーを作成することです。次に、クラスでラッパーを挿入して使用します。単体テストを行うときは、メソッドの呼び出しと応答を期待するモックラッパーに置き換えることができます。

[〜#〜] edit [〜#〜]:SmtpClientはインターフェースから派生しておらず、仮想メソッドがないため、ラッパーが必要です(少なくともRhinoMocksの場合)。仮想メソッドなしでクラスを直接モックできるモックフレームワークを使用する場合は、ラッパーをスキップして、SmtpClientモックを直接挿入できます。

public class SmtpClientWrapper
{
    private SmtpClient Client { get; set; }

    public SmtpClientWrapper( SmtpClient client )
    {
         this.Client = client;
    }

    public virtual void Send( MailMessage msg )
    {
         this.Client.Send( msg );
    }

    ...
}


public class MyClass
{
    private SmtpClientWrapper Client { get; set; }

    public MyClass( SmtpClientWrapper client )
    {
         this.Client = client;
    }

    public void DoSomethingAndNotify()
    {
         ...
         this.Client.Send( msg );
    }
}

(RhinoMocksで)テスト済み:

public void DoSomethingAndNotifySendsAMessageTest()
{
     SmtpClientWrapper client = MockRepository.GenerateMock<SmtpClientWrapper>();
     client.Expect( c => c.Send( new MailMessage() ) ).IgnoreArguments();

     MyClass klass = new MyClass( client );

     klass.DoSomethingAndNotify();

     client.VerifyAllExpectations();
}
4
tvanfosson

私はこれを見つけました- http://improve.dk/archive/2010/07/01/papercut-vs-smtp4dev-testing-mail-sending-locally.aspx は、papercutとsmtp4devの使用方法を説明していますどちらも良いツールです

3
Enzero

私は Antix SMTP Server For Developers を使用しています。これは、アプリケーションを開くのと同じくらい簡単です。メッセージはフォルダに保存され、UIで表示できます。かなり迅速/簡単なソリューション。ここで触れておきたい。

参照: windows用の開発smtpサーバー

3
Micah

Mac OS Xを使用している場合は、 MockSMTP.app を使用できます。

2

NetDumbsterを使用することもできます。

http://netdumbster.codeplex.com/

2
Carlos Mendible

DevNull SMTPサーバー は、クライアントとSMTPサーバー間の通信に関するすべての詳細をログに記録します。送信コードが機能しなかった理由を診断しようとした場合に役立つと思われます。

Java=で記述されており、実行可能なjarとしてデプロイされます。ソースコードが利用できないようです。

2
Don Kirkby

Python=がインストールされている場合は、次の1つのライナーを実行して、メッセージをstdoutにダンプするコンソールでデバッグsmtpサーバーを実行できます。

Sudo python -m smtpd -n -c DebuggingServer localhost:25

ここから引っかかる: http://muffinresearch.co.uk/archives/2010/10/15/fake-smtp-server-with-python/

0
Brad Parks

Sean Carpenterが述べたように、 Papercut はローカル開発のための強力なソリューションです。ただし、ステージングサーバーまたはテストサーバーも実行している場合は、開発環境とステージング環境に同じアプローチを使用できるため、 mailtrap.io の方が全体的に簡単なソリューションになる可能性があります。

0
theDmi

他の多くの提案に従って、私がかなり頻繁に使用した無料のツール: http://www.toolheap.com/test-mail-server-tool/

実際にはTDD向けではありませんが、送信される電子メールごとにOutlookエクスプレスウィンドウをポップアップできるため、手動テストに役立ちます。

0
Adam Butler

Tvanfossonによって提案されたSmtpClientWrapperクラスは、Sendメソッドの宣言で非常に重要な「仮想」キーワードを必要とすることに注意してください。

0
Pete

また、私自身の http://ssfd.codeplex.com/ もあり、これはオープンソースのSMTPエミュレータです。電子メールを受信し、タスクアイコンからアクセスできるフォルダにドロップします

0