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

时间:2015-11-09 14:25:22

标签: 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("xxxx@zzzz.com");

这是从参考书中解脱出来的 - 这对我来说似乎是合理的。但是,在Visual Studio Express 2015中,对于myMessage.To.Add行,我收到警告消息

  

无法分配到'添加'因为这是一种方法'。

所以,看了一下类似问题的Stack Overflow,我试过了

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);

但仍然有例外。

测试正在localhost上本地运行,使用嵌入了用户控件的aspx文件,VS中的Ctrl + F5,填写表单详细信息,然后按下发送按钮。当运行达到

时,会发生未处理的异常
  MailMessage myMessage = new MailMessage();

以下是详细信息:

  

System.FormatException未被用户代码
处理   HResult = -2146233033消息=在中找到无效字符   邮件标题:' @'。 Source = System StackTrace:          at System.Net.Mail.MailAddressParser.ParseLocalPart(String data,Int32& index,Boolean expectAngleBracket,Boolean   expectMultipleAddresses)          at System.Net.Mail.MailAddressParser.ParseAddress(String data,Boolean expectMultipleAddresses,Int32& index)          at System.Net.Mail.MailAddressParser.ParseAddress(String data)          at System.Net.Mail.MailAddress..ctor(String address,String displayName,Encoding displayNameEncoding)          在System.Net.Mail.MailMessage..ctor()          at Controls_ContactForm.btnSend_Click(Object sender,EventArgs e)位于c:\ Websites \ xxxxWebsite \ Controls \ ContactForm.ascx.cs:第21行          在System.Web.UI.WebControls.Button.OnClick(EventArgs e)          在System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)          在System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String   eventArgument)          在System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)          在System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)          在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)
  的InnerException:

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> 

2 个答案:

答案 0 :(得分:0)

尴尬。问题是web.config文件中的一个错误 - 通过拼写错误有一封电子邮件,其中有两次“@”。问题解决了。

答案 1 :(得分:-1)

您必须向To对象添加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); 对象,而不仅仅是一个字符串,它是一个MailAddressCollection,并且可以添加许多地址。

{{1}}