2

フロントエンド(Asp.Net MVC)の速度が低下しないように、電子メールを非同期で送信しようとしています。

SmtpClient smtp = new SmtpClient(_mailServer, 25);
smtp.UseDefaultCredentials = true;
MailMessage message = new MailMessage();

// ...etc

smtp.SendA(message); // this works fine

smtp.SendAsync(message, null); // if i change it to this, it doesn't work (mail never appears)

私は2番目のパラメータが何のためにあるのか本当に理解していませんSendAsync

MSDNは、操作が完了したときに呼び出されるメソッドに渡すオブジェクトを示しています

まあ、wtf?どのような方法ですか?ですから、これが何のためにあるのかよくわからないので、nullを渡そうとしましたが、明らかに何かが間違っています。

4

3 に答える 3

2

基本的に、これは、sendcompletedイベントで渡されるオブジェクトです。

SendAsyncを使用すると、イベントSendCompletedが発生します。次に、そのイベントを処理して、別の電子メールを送信できることを確認します。これの主な理由は、一度に1つの電子メールしか送信できないためです。

于 2010-09-28T15:40:11.940 に答える
0

電子メールが送信される前にアプリケーションが終了している可能性があります。2番目のパラメーターは、oncompleteイベントハンドラーに渡されます。

MSDNの例を見て、それを単独で試してください。

http://msdn.microsoft.com/en-us/library/x5x13z6h.aspx

于 2010-09-28T15:54:56.063 に答える
0

SendCompletedイベント用に設定されたイベントハンドラーはありますか?SmtpClient.SendAsyncのMSDNサンプルでは、​​userStateは単なる文字列ですが、SendCompletedイベントにコールバック関数が割り当てられています。それがここに欠けているものかもしれません。

于 2010-09-28T15:48:08.817 に答える