我有以下代码处理来自联系表单的电子邮件:
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>
答案 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}}