C# MailMessage无法分配给Add,因为它是方法组asp.net 4.0

C# MailMessage无法分配给Add,因为它是方法组asp.net 4.0,c#,asp.net,methods,C#,Asp.net,Methods,我有以下代码用于处理联系人表单产生的电子邮件: MailMessage myMessage = new MailMessage(); myMessage.Subject = "Comment from SAM35 website"; myMessage.Body = mailbody; myMessage.From = new MailAddress("xxxx@yyyy.com", "SAM35 Webamster"); myMessage.To.Add = new MailAddress(

我有以下代码用于处理联系人表单产生的电子邮件:

MailMessage myMessage = new MailMessage();
myMessage.Subject = "Comment from SAM35 website";
myMessage.Body = mailbody;

myMessage.From = new MailAddress("xxxx@yyyy.com", "SAM35 Webamster");
myMessage.To.Add = new MailAddress("xxxx@zzzz.com");
这是从一本参考书中摘取的,对我来说似乎是合理的。但是,在Visual Studio Express 2015中,对于myMessage.To.Add行,我收到了警告消息

无法分配给“Add”,因为它是“method”

所以,在查看了堆栈溢出的类似问题后,我尝试了

myMessage.To.Add ("xxxx@zzzz.com");
这消除了VS警告,但在运行时导致未处理的异常。如果能在这个问题上找到解决办法,我将不胜感激

我把代码改为

MailAddress ToAddress = new MailAddress("aaaaaa@bbbbb", "ccccccc");
        myMessage.To.Add(ToAddress);
        SmtpClient mySmtpClient = new SmtpClient();
        mySmtpClient.Send(myMessage);
但还是有例外

测试正在本地主机上运行,使用嵌入了用户控件的aspx文件,在VS中使用Ctrl+F5,完成表单详细信息,然后点击发送按钮。当运行达到最大值时,会发生未处理的异常

  MailMessage myMessage = new MailMessage();
以下是例外情况的详细信息:

System.FormatException未由用户代码处理
HResult=-2146233033 Message=在中发现无效字符 邮件标题:'@'。Source=系统堆栈跟踪: 位于System.Net.Mail.MailAddressParser.ParseLocalPart(字符串数据、Int32和索引、布尔括号、布尔值 (多件礼服) 位于System.Net.Mail.MailAddressParser.ParseAddress(字符串数据、布尔值expectMultipleAddresses、Int32和索引) 位于System.Net.Mail.MailAddressParser.ParseAddress(字符串数据) 位于System.Net.Mail.MailAddress..ctor(字符串地址、字符串显示名称、编码显示名称编码) 在System.Net.Mail.MailMessage..ctor()上 在Controls\u ContactForm.btnSend\u点击c:\Websites\xxxxWebsite\Controls\ContactForm.ascx.cs中的(对象发送者,事件参数e):第21行 在System.Web.UI.WebControls.Button.OnClick(EventArgs e)中 位于System.Web.UI.WebControl.Button.RaisePostBackEvent(String eventArgument) 在System.Web.UI.WebControl.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 事件(参数) 位于System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument) 位于System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)
内部异常:

ContactForm.ascx.cs:导致异常的第21行是这样一行:

        MailMessage myMessage = new MailMessage();
我不明白为什么这会导致电子邮件标题中出现“@”-再次建议将不胜感激

如果有帮助,web.config的system.net部分将显示:

 <system.net>
 <mailSettings>
   <smtp deliveryMethod="Network" from="yyyyy@gmail.com">
     <network defaultCredentials="false" host="=smtp.gmail.com" port="587" userName="yyyy@gmail.com" password="qqqqqq"/>
   </smtp>
 </mailSettings>
 </system.net> 

您必须将
邮件地址
对象添加到
收件人
对象中,而不仅仅是一个字符串,它是一个邮件地址集合,可以添加多个地址

MailMessage myMessage = new MailMessage();
myMessage.Subject = "Comment from SAM35 website";
myMessage.Body = mailbody;

myMessage.From = new MailAddress("xxxx@yyyy.com", "SAM35 Webamster");
MailAddress ToAddress = new MailAddress("xxxx@zzzz.com", "zzz to");
myMessage.To.Add(ToAddress);

尴尬。问题是web.config文件中有一个错误——通过输入错误,有一封电子邮件两次在其中包含“@”。问题已解决。

除非您告诉我们未处理的异常是什么、发生在哪里、提供相关代码等,否则我们无法帮助您。我怀疑这是直接从参考书中删除的。这本书是由Imar Spaanjaars编写的“开始ASP.Net 3.5”。我承认我看错了剧本。这个项目并不是我最美好的时刻。但这并不能回答问题。代码按照建议进行了修改——但仍然发生了未经处理的异常——如编辑的开场白中的进一步细节所示。我很困惑。