开发者

Dispose SmtpClient in SendComplete?

开发者 https://www.devze.com 2023-02-26 02:10 出处:网络
When I use SmtpClient\'s SendAsync to send email, how do I dispose the smtpclient instance correctly?

When I use SmtpClient's SendAsync to send email, how do I dispose the smtpclient instance correctly?

Let's say:


MailMessage mail = new System.Net.Mail.MailMessage()
{
   Body = MailBody.ToString(),
   IsBodyHtml = true,
   From = new MailAddress(FromEmail, FromEmailTitle),
   Subject = MailSubject
};
mail.To.Add(new MailAddress(i.Email, ""));
SmtpClient sc = new SmtpClient(SmtpServerAddress);
//Add SendAsyncCallback to SendCompleted
sc.SendCompleted += new SendCompletedEventHandler(SendAsyncCallback);
//using SmtpClient to make 开发者_如何学Goasync send (Should I pass sc or mail into SendAsyncCallback?)
sc.SendAsync(mail, sc);

In the SendAsyncCallback method, should I call sc.Dispose(), or mail.Dispose()?

I checked MSDN document, one example calls MailMessage.Dispose(), but will this dispose method also dispose the SmtpClient instance?


You should dispose both the MailMessage and the SmtpClient in SendAsyncCallback.

Disposing the MailMessage will not dispose the SmtpClient automatically (because you might want to send two messages with the same SmtpClient, and you wouldn't want the client to be disposed as soon as you disposed the first message).


This example: from the MSDN Library documentation only closes the Message so I'm going with that in my implementation: SmtpClient.SendAsync Method

message.Dispose();

I was running into this issue referred to in this question where the send was always being cancelled so I'm removing my using {} statement: SmtpClient.SendAsync Calls are Automatically Cancelled

Okay, I just tried issuing the message.Dispose() and even that was throwing the error saying it couldn't send the email because of the message being disposed. Possibly because mine is a asp.net mvc app and the example is a console app. In any case the garbage collector should pick up these options once everything falls out of scope...

0

精彩评论

暂无评论...
验证码 换一张
取 消