问题:制作了一个小型邮件程序,它在我的开发者电脑上完美运行,但投入生产后却失败了.
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("zzz@xxx.yy"));
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();
}
}
Run Code Online (Sandbox Code Playgroud)
我确实得到了正确的邮件地址和生产服务器上的所有内容,但我的电子邮件收件箱中没有任何内容:-(.我没有收到任何例外.
我尝试在同一台服务器上使用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("zzz@xxx.yy"));
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);
}
Run Code Online (Sandbox Code Playgroud)
非常有趣:即使插入绝对不存在的SMTP服务器,我仍然不会在我的生产环境中出现任何错误.我在我的开发者电脑上得到一个例外,这基本上意味着smtp服务器不存在(我也希望得到一条消息).
案例解决了:-)
我学到了更多关于IIS的知识!
IIS设置为"将电子邮件存储在分拣目录中"而不是"将电子邮件发送到SMTP服务器".不幸的是我在IIS上并不擅长,我不知道有这样的设置......我现在!
遗憾的是,来自@GarryM的"仔细检查配置设置"对我或我的邮件管理员来说不足以让我们看看IIS.我是一名程序员,而且我的mail-adm太多了网络人员:-)
谢谢大家的答案.部分是因为你所有的好的提示和想法,我可以留下越来越多的部分.
| 归档时间: |
|
| 查看次数: |
7288 次 |
| 最近记录: |