我对如何管理SmtpClient感到有点困惑,因为它是一次性的,特别是如果我使用SendAsync进行调用.据推测,在SendAsync完成之前,我不应该调用Dispose.但我应该打电话给它(例如,使用"使用").该方案是一个WCF服务,它在发出呼叫时定期发送电子邮件.大多数计算速度很快,但发送电子邮件可能需要一秒左右的时间,所以Async会更好.
我每次发邮件时都应该创建一个新的SmtpClient吗?我应该为整个WCF创建一个吗?救命!
更新如果它有所不同,则始终为用户自定义每封电子邮件.WCF托管在Azure上,Gmail用作邮件程序.
namespace Binarios.admin
{
public class SendEmailGeral
{
public SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
public MailMessage msg = new MailMessage();
public void Enviar(string sendFrom, string sendTo, string subject, string body)
{
string pass = "12345";
System.Net.NetworkCredential smtpCreds = new System.Net.NetworkCredential(sendFrom, pass);
//setup SMTP Host Here
client.UseDefaultCredentials = false;
client.Credentials = smtpCreds;
client.EnableSsl = true;
MailAddress to = new MailAddress(sendTo);
MailAddress from = new MailAddress(sendFrom);
msg.IsBodyHtml = true;
msg.Subject = subject;
msg.Body = body;
msg.From = from;
msg.To.Add(to);
client.Send(msg);
}
} …Run Code Online (Sandbox Code Playgroud)