【问题标题】:cannot send email from global.asax无法从 global.asax 发送电子邮件
【发布时间】:2012-03-08 12:17:41
【问题描述】:

我想简单地收到有关站点错误的通知,并且我有这个直接的代码,它在应用程序中的任何地方都可以工作,除了 global.asax!

void Application_Error(object sender, EventArgs e) 
    {
        UIHelper.SendErrorMessage(Server.GetLastError());
    }

另一个项目中的代码:

public static void SendErrorMessage(Exception ex)
        {
            MailMessage errorMessage = new MailMessage();
            errorMessage.From = new MailAddress("xxxxxx@gmail.com", "Site Errors");
            errorMessage.Subject = "Error in sending overseas user";
            errorMessage.CC.Add(new MailAddress("xxxxxxx@gmail.com", "xxxxx")); //test only
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("Source:{0}\n", ex.Source);
            sb.AppendFormat("Message:{0}\n", ex.Message);
            sb.AppendFormat("Stack Trace:{0}\n", ex.StackTrace);
            sb.AppendFormat("Inner Exception:{0}\n", ex.InnerException == null ? string.Empty : ex.InnerException.Message);
            errorMessage.Body = sb.ToString();
            errorMessage.IsBodyHtml = false;

            var smtp = new SmtpClient();

            try
            {
                smtp.Send(errorMessage);
            }
            catch
            {
            }
        }

更新:我已经编写了将异常写入我网站文件夹中的文件的逻辑,我在我的开发框中尝试了该逻辑并且它有效,但它在主机中无法正常工作!这让我发疯!电子邮件逻辑在我的盒子里工作,文件记录在我的盒子里工作,但它们都不能在生产中工作?!这真的很奇怪......有什么想法吗?

【问题讨论】:

  • 怎么不行?它会抛出异常吗?如果有,有什么例外?此外,空的catch 子句被认为是最糟糕的做法。不要捕捉异常,除非你真的能做些什么。
  • 是抛出异常还是什么?
  • 抛出了什么异常,可能是网络或防火墙问题,也可能是权限问题。首先,您需要向 SmtpClient 提供正确的凭据...stackoverflow.com/questions/298363/…
  • 忘了提到它可以在我的开发盒上运行,但它不适用于 Godaddy 托管。除非我写入文件,否则不能做太多事情。看看有什么异常。
  • 你有很多选择。 Elmah 可以将异常存储在内存中、数据库中,甚至可以通过电子邮件发送给您。

标签: c# asp.net


【解决方案1】:

使用Elmah

确实是一个完整的解决方案。

【讨论】:

    猜你喜欢
    • 2013-12-05
    • 2015-03-24
    • 2012-09-20
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    相关资源
    最近更新 更多