私は主にSMTPを使用する電子メールメッセージを送信するアプリケーションを開発しました。メッセージを1つずつ送信するのは問題ありませんが、処理を迅速化することを検討しています。私はSmtpClient
の複数のインスタンスと、互いに衝突しないようにするためのメッセージを作成しました。別々のインスタンスのため、私は複数のスレッド上で.Send()
の実行がうまくいくと仮定しました。しかし、私のThread
コードだけのものは、このコードを使用して1つのスレッドで1つの電子メールを送信することはできないため、動作しません。私は単に曖昧な"Failure sending mail"
の例外を受け取ります。私は動作するコードを投稿し、Thread
は動作しません。誰かが原因と思われるものを共有することができますか?C#System.Threadingを使用してSMTPを送信する
注は、私は現在、新しいasync
機能を使用するために探してではなく、活用していないですThread
ワーキング宣言とメソッドコール:
var SMTP = new SmtpClient
{
Host = txtBxSenderHost.Text,
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(strSenderAddress, strSenderPassword)
};
using (var message = new MailMessage(senderAdrress, toAddress)
{
Subject = strSubject,
Body = strBody
})
{
SMTP.Send(message);
}
機能していないスレッドの宣言とメソッドコール:
var SMTP = new SmtpClient
{
Host = txtBxSenderHost.Text,
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(strSenderAddress, strSenderPassword)
};
using (var message = new MailMessage(senderAdrress, toAddress)
{
Subject = strSubject,
Body = strBody
})
{
Thread T1 = new Thread(delegate() { SMTP.Send(message); });
T1.Start();
}
との生活が容易になりますか?この方法では、新しいスレッドがメッセージを送信する前にメッセージが破棄される可能性があります。 –
作業宣言と作業メソッドを別のメソッドにラップし、そのメソッドをスレッド – nsconnector
で使用します。もう少し詳しく教えてもらえますか?私はまた、新しいスレッドがそれを送信する前に、あなたが処理していることを意味しているのか確信しています。私はまたここから離れているかもしれません、私はあなたが私と一緒に裸になることを願っています。 – scniro