Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MailMessage.BodyFormat等于MailFormat.Html时引发未知错误_C#_Asp.net - Fatal编程技术网

C# MailMessage.BodyFormat等于MailFormat.Html时引发未知错误

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来

我正在将visual studio 2010与.Net Framework 4.0一起使用,并试图发送电子邮件。
当我使用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);
        }
    }