在asp.net中发送邮件失败
我正在尝试使用以下代码发送异步邮件:在asp.net中发送邮件失败,asp.net,c#-4.0,sendmail,Asp.net,C# 4.0,Sendmail,我正在尝试使用以下代码发送异步邮件: #region Method :: Send Email public static void vSendMail(string sEmailAddress, string sSubject = "", string sMsgBody = "", int nUserID = 1, Telerik.Reporting.ReportSource reportSource = null, List<string> ccUsersEma
#region Method :: Send Email
public static void vSendMail(string sEmailAddress, string sSubject = "", string sMsgBody = "", int nUserID = 1, Telerik.Reporting.ReportSource reportSource = null, List<string> ccUsersEmails = null)
{
try
{
string url = ConfigurationManager.AppSettings["URL"];
string email = ConfigurationManager.AppSettings["Email"];
sMsgBody = "";// PopulateBody("", "", url.Split('!')[0], sMsgBody);
BaseClass _baseClass = new BaseClass();
var FromAddress = new MailAddress(CommonTools.Decrypt(email.Split('!')[0], true, _baseClass.UserID), "Metal Art Work");
var ToAddress = new MailAddress(sEmailAddress, sEmailAddress);
string sFromPassword = CommonTools.Decrypt(email.Split('!')[1], true, _baseClass.UserID);
var smtp = new SmtpClient
{
Host = ConfigurationManager.AppSettings["Host"],
Port = int.Parse(ConfigurationManager.AppSettings["Port"]),
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
//UseDefaultCredentials = false,
Credentials = new NetworkCredential(FromAddress.Address, sFromPassword)
};
using (var message = new MailMessage(FromAddress, ToAddress)
{
Subject = sSubject,
Body = sMsgBody,
IsBodyHtml = true
})
{
//--Cc Emails--\\
if (ccUsersEmails != null)
{
//add CC
}
//--Attachment--\\
if (reportSource != null)
{
// Add attach
}
// smtp.Send(message);
SendEmail(message, smtp, true);
}
}
catch (Exception ex)
{
vAddToLog(ex, nUserID, ErrorCodes.SendMailError);
throw new JOVALException(ex);
}
}
private delegate void SendEmailDelegate(System.Net.Mail.MailMessage m);
private static void SendEmailResponse(IAsyncResult ar)
{
try
{
SendEmailDelegate sd = (SendEmailDelegate)(ar.AsyncState);
sd.EndInvoke(ar);
}
catch (Exception ex)
{
vAddToLog(ex, 0, ErrorCodes.SendMailError);
}
}
public static void SendEmail(System.Net.Mail.MailMessage m, SmtpClient smtpClient, Boolean Async)
{
try
{
// string userState = "Test";
if (Async)
{
SendEmailDelegate sd = new SendEmailDelegate(smtpClient.Send);
AsyncCallback cb = new AsyncCallback(SendEmailResponse);
sd.BeginInvoke(m, cb, sd);
}
else
{
smtpClient.Send(m);
}
}
catch (Exception ex)
{
vAddToLog(ex, 0, ErrorCodes.SendMailError);
}
}
#endregion
#区域方法::发送电子邮件
public static void vSendMail(字符串sEmailAddress,字符串ssobject=“”,字符串sMsgBody=“”,int-nUserID=1,Telerik.Reporting.ReportSource ReportSource=null,List-ccUsersEmails=null)
{
尝试
{
字符串url=ConfigurationManager.AppSettings[“url”];
字符串email=ConfigurationManager.AppSettings[“email”];
sMsgBody=“”;//PopulateBody(“,”,url.Split(“!”)[0],sMsgBody);
基类_BaseClass=新基类();
var FromAddress=新邮件地址(CommonTools.Decrypt(email.Split(“!”)[0],true,_baseClass.UserID),“金属艺术品”);
var ToAddress=新邮件地址(sEmailAddress,sEmailAddress);
字符串sFromPassword=CommonTools.Decrypt(email.Split(“!”)[1],true,_baseClass.UserID);
var smtp=新SmtpClient
{
主机=ConfigurationManager.AppSettings[“主机”],
Port=int.Parse(ConfigurationManager.AppSettings[“端口”]),
EnableSsl=true,
DeliveryMethod=SmtpDeliveryMethod.Network,
//UseDefaultCredentials=false,
凭据=新网络凭据(FromAddress.Address,sFromPassword)
};
使用(var message=新邮件消息(FromAddress,ToAddress)
{
Subject=ssobject,
Body=sMsgBody,
IsBodyHtml=true
})
{
//--抄送电子邮件--\\
如果(CCUsersMail!=null)
{
//添加抄送
}
//--附件:--\\
if(reportSource!=null)
{
//附加
}
//smtp.Send(message);
SendEmail(消息、smtp、true);
}
}
捕获(例外情况除外)
{
vAddToLog(例如,nUserID,ErrorCodes.SendMailError);
抛出新的JOVALException(ex);
}
}
私有委托void sendmaildelegate(System.Net.Mail.MailMessage);
专用静态无效SendEmailResponse(IAsyncResult ar)
{
尝试
{
SendEmailDelegate sd=(SendEmailDelegate)(ar.AsyncState);
sd.EndInvoke(ar);
}
捕获(例外情况除外)
{
vAddToLog(例如,0,ErrorCodes.SendMailError);
}
}
公共静态void sendmail(System.Net.Mail.MailMessage,SmtpClient-SmtpClient,Boolean-Async)
{
尝试
{
//字符串userState=“Test”;
如果(异步)
{
SendEmailDelegate sd=新的SendEmailDelegate(smtpClient.Send);
AsyncCallback cb=新的AsyncCallback(SendEmailResponse);
标准偏差。起始偏差(m,cb,标准偏差);
}
其他的
{
smtpClient.Send(m);
}
}
捕获(例外情况除外)
{
vAddToLog(例如,0,ErrorCodes.SendMailError);
}
}
#端区
但我面临以下例外:
发送邮件失败。-->System.ObjectDisposedException:无法访问已处置的对象。
对象名称:“System.Net.Mail.MailMessage异常非常明显。如果以后打算使用变量,请不要将变量放入
using()
块中。非常感谢。它很好用