C# MailMessage.BodyFormat等于MailFormat.Html时引发未知错误
我正在将visual studio 2010与.Net Framework 4.0一起使用,并试图发送电子邮件。C# MailMessage.BodyFormat等于MailFormat.Html时引发未知错误,c#,asp.net,C#,Asp.net,我正在将visual studio 2010与.Net Framework 4.0一起使用,并试图发送电子邮件。 当我使用System.Web.Mail中定义的MailMessage时,一切正常,直到我设置MailMessage.BodyFormat=MailFormat.Html,它将抛出未知错误,但如果MailMessage.BodyFormat=MailFormat.Text,则不会发生此错误 虽然我使用System.Net.MailMailMessage.IsBodyHtml=true来
当我使用System.Web.Mail中定义的MailMessage时,一切正常,直到我设置
MailMessage.BodyFormat=MailFormat.Html
,它将抛出未知错误,但如果MailMessage.BodyFormat=MailFormat.Text
,则不会发生此错误虽然我使用System.Net.Mail
MailMessage.IsBodyHtml=true
来实现我的目标,但我仍然想知道是什么原因导致了这个未知错误,有什么方法可以解决它吗?下面的代码将抛出一个未知错误,如 下面的代码将能够发送文本形式的电子邮件,如
根据文件,MailFormat现在已经过时。警告应显示为: 警告 这个API现在已经过时了。推荐的备选方案:System.Net.Mail 我建议使用
MailMessage.alternativeviews
属性为MailMessage
提供HTML和文本替代
更多关于。根据AlternateView文件:
使用AlternateViews属性指定电子邮件的副本
以不同的格式。例如,如果您以HTML格式发送消息,则
可能还希望提供纯文本版本,以防
收件人使用无法显示HTML内容的电子邮件阅读器。为了
演示如何使用其他视图创建消息的示例,请参见
交替新闻
您修改的代码如下所示:
public static string SendMail(string strsender, string strReceiver, string strsubject, string strbody)
{
try
{
MailMessage vMailMessage = new MailMessage();
char[] separator = { ',' };
vMailMessage.From = GetEmailAddress(strsender.Trim(), separator); //寄件人 //存取被拒
vMailMessage.To.Add(GetEmailAddress(strReceiver.Trim(), separator)); //收件人
//vMailMessage.Cc = GetEmailAddress(vDataRow["CC"].ToString().Trim(), separator); //副本
//vMailMessage.Bcc = GetEmailAddress(vDataRow["BCC"].ToString().Trim(), separator); //密件副本
vMailMessage.Subject = strsubject.Trim(); //主旨
vMailMessage.IsBodyHtml = true;
vMailMessage.Body = strbody;
SmtpMail.SmtpServer = "Webmail"; //設定Mail伺服器
SmtpMail.Send(vMailMessage); //發送mail
return "ok";
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
错误是什么?它只是说未知错误,请稍等,我可以上传该图像。@Ben就像这样英文错误可能会有帮助。它还不是一个,因为我无法将其复制到控制台应用程序并运行它。是的,我知道,但我们公司仍然存在大量使用.Net Framework 3.0、visual studio 2005或更低版本的系统,所以我想知道是否有任何方法可以不用修改就使用他们的代码。任何更改都可能导致意外结果。我认为您不需要MailMessage.BodyFormat=MailFormat.Htmlif使用System.Net.Mail,您只需使用.IsBodyHtml=true即可。语句MailMessage.BodyFormat=MailFormat.Html是redundantuse System.Web.Mail或System.Net.Mail,而不是bothYup,谢谢您的建议,我已经使用了.IsBodyHtml=true。解决它。但是我想知道我是否可以不经修改地使用我队友的代码?任何更改都可能导致意外结果。
public static string SendMail(string strsender, string strReceiver, string strsubject, string strbody)
{
try
{
MailMessage vMailMessage = new MailMessage();
char[] separator = { ',' };
vMailMessage.From = GetEmailAddress(strsender.Trim(), separator); //寄件人 //存取被拒
vMailMessage.To = GetEmailAddress(strReceiver.Trim(), separator); //收件人
//vMailMessage.Cc = GetEmailAddress(vDataRow["CC"].ToString().Trim(), separator); //副本
//vMailMessage.Bcc = GetEmailAddress(vDataRow["BCC"].ToString().Trim(), separator); //密件副本
vMailMessage.Subject = strsubject.Trim(); //主旨
vMailMessage.BodyFormat = MailFormat.Text;
vMailMessage.Body = strbody;
SmtpMail.SmtpServer = "Webmail"; //設定Mail伺服器
SmtpMail.Send(vMailMessage); //發送mail
//SmtpMail.Send(vMailMessage.From, vMailMessage.To, vMailMessage.Subject, vMailMessage.Body); //發送mail
return "ok";
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
public static string SendMail(string strsender, string strReceiver, string strsubject, string strbody)
{
try
{
MailMessage vMailMessage = new MailMessage();
char[] separator = { ',' };
vMailMessage.From = GetEmailAddress(strsender.Trim(), separator); //寄件人 //存取被拒
vMailMessage.To.Add(GetEmailAddress(strReceiver.Trim(), separator)); //收件人
//vMailMessage.Cc = GetEmailAddress(vDataRow["CC"].ToString().Trim(), separator); //副本
//vMailMessage.Bcc = GetEmailAddress(vDataRow["BCC"].ToString().Trim(), separator); //密件副本
vMailMessage.Subject = strsubject.Trim(); //主旨
vMailMessage.IsBodyHtml = true;
vMailMessage.Body = strbody;
SmtpMail.SmtpServer = "Webmail"; //設定Mail伺服器
SmtpMail.Send(vMailMessage); //發送mail
return "ok";
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}