问题:制作了一个小型邮件程序,该程序在我的开发人员电脑上完美运行,但在投入生产时却失败了。
protected void Page_Load(object sender, EventArgs e)
{
string smtpHost = ConfigurationManager.AppSettings["SmtpAddress"];
MailMessage mail = new MailMessage();
mail.From = new MailAddress(ConfigurationManager.AppSettings["FromMailAddress"]);
mail.Sender = new MailAddress(ConfigurationManager.AppSettings["FromMailAddress"]);
mail.To.Add(new MailAddress("[email protected] /cdn-cgi/l/email-protection"));
mail.Subject = "Test mail";
mail.Body = string.Format("Is this mail sent via {0} ?", smtpHost);
lblMsg2.Text = string.Format("SmtpHost: {0}", smtpHost); ;
SmtpClient client = new SmtpClient(smtpHost);
try
{
client.Send(mail);
}
catch (Exception exception)
{
lblMsg3.Text = exception.Message.ToString();
lblMsg4.Text = exception.InnerException.ToString();
}
}
我确实获得了正确的邮件地址和生产服务器上的所有内容,但我的电子邮件收件箱中没有任何内容:-(。我没有收到任何异常。
我尝试在同一台服务器上使用 telnet,并且可以从那里发送邮件。
我尝试安装 WireShark,它正在查看服务器上的网卡,当使用 telnet 时,我确实得到了我怀疑的响应,但从我的程序中我没有收到任何信息。
编辑于 2012-03-12 @ 09:46 丹麦时间
现在已将代码更新为如下所示
protected void Page_Load(object sender, EventArgs e)
{
string smtpHost = ConfigurationManager.AppSettings["SmtpAddress"];
MailMessage mail = new MailMessage();
mail.From = new MailAddress(ConfigurationManager.AppSettings["FromMailAddress"]);
mail.Sender = new MailAddress(ConfigurationManager.AppSettings["FromMailAddress"]);
mail.To.Add(new MailAddress("[email protected] /cdn-cgi/l/email-protection"));
mail.Subject = "Test mail";
mail.Body = string.Format("Is this mail sent via {0} ?", smtpHost);
lblMsg2.Text = string.Format("SmtpHost: {0}", smtpHost); ;
SmtpClient client = new SmtpClient(smtpHost);
client.Send(mail);
}
非常有趣的是:即使插入肯定不存在的 SMTP 服务器,我在生产环境中仍然没有收到任何错误。我确实在我的开发人员电脑上遇到了异常,这基本上意味着 smtp 服务器不存在(我也希望收到相关消息)。