【发布时间】:2013-12-13 20:16:07
【问题描述】:
我正在使用 Razor 通过 SMTP 发送电子邮件。我正在使用相同的代码在不同的站点中执行此操作,但是在此站点上出现错误。我已经更改了 Web.config SMTP 设置。我不确定我做错了什么。
@helper SendContactEmail(ContactFormModel formModel)
{
MailMessage mm = new MailMessage("contact@chasecomputerservices.com", "eric@chasecomputerservices.com");
mm.Subject = "New mail from J&M Services Contact Form";
//mm.Body = string.Format("Name: {0}\nEmail: {1}\n\nMessage: {2}", formModel.Name, formModel.Email, formModel.Comment);
mm.Body = "testing body";
mm.IsBodyHtml = false;
SmtpClient client = new SmtpClient();
client.DeliveryMethod = SmtpDeliveryMethod.Network;
try
{
client.Send(mm);
}
catch (Exception ex)
{
<h2>@ex.Message</h2>
<p>@ex.StackTrace</p>
}
}
我收到的错误是“发送邮件失败”,而 StackTrace 是 “在 System.Net.Mail.SmtpClient.Send(MailMessage 消息)处 ASP._Page_macroScripts_Contact_cshtml.b__16(TextWriter __razor_helper_writer) 在 c:\Dev\SVN\Main\UmbracoApps\umbJMServices\umbJMServices\macroScripts\Contact.cshtml:line 262"。
第262行是client.Send(mm);
我得到一个 InnerException:
System.IO.IOException:无法从传输中读取数据 连接:net_io_connectionclosed。在 System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(字节 [] 缓冲区, Int32 偏移,Int32 读取,布尔读取线)在 System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader 调用者,布尔 oneLine)在 System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader 调用者)在 System.Net.Mail.SmtpConnection.GetConnection(ServicePoint 服务点)在 System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint) 在 System.Net.Mail.SmtpClient.GetConnection() 在 System.Net.Mail.SmtpClient.Send(MailMessage 消息)
【问题讨论】:
-
这通常意味着您的 SMTP 服务器有问题。有 InnerException 吗?
-
您的 web.config 中是否定义了 SMTP 服务器?
-
我在问题中添加了我的 InnerException。 @SLaks
-
我确实在 Web.config 中定义了一个 SMTP 服务器,它与工作站点的完全相同。 @AndyEvans
-
你可能有防火墙。