从Elmah发送电子邮件?

有人使用Elmah通过电子邮件发送exception吗? 我已经通过SQL Server设置了Elmah日志logging,并且可以通过Elmah.axd页面查看错误页面,但是我无法使电子邮件组件工作。 这里的想法是获得电子邮件通知,所以我们可以更快地对exception作出反应。 这里是我的web.config(省略了不必要的部分),所有的敏感数据由* * *replace。 即使我指定了要连接的服务器,SMTP服务是否需要在本地计算机上运行?

<?xml version="1.0"?> <configuration> <configSections> <sectionGroup name="elmah"> <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah"/> <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah"/> <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/> </sectionGroup> </configSections> <appSettings/> <connectionStrings> <add name="elmah-sql" connectionString="Data Source=***;Initial Catalog=***;Persist Security Info=True;User ID=***;Password=***" /> </connectionStrings> <elmah> <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-sql" > </errorLog> <errorMail from="test@test.com" to="test@test.com" subject="Application Exception" async="false" smtpPort="25" smtpServer="***" userName="***" password="***"> </errorMail> </elmah> <system.web> <customErrors mode="RemoteOnly" defaultRedirect="CustomError.aspx"> <error statusCode="403" redirect="NotAuthorized.aspx" /> <!--<error statusCode="404" redirect="FileNotFound.htm" />--> </customErrors> <httpHandlers> <remove verb="*" path="*.asmx"/> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> </httpHandlers> <httpModules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/> </httpModules> </system.web> </configuration> 

你需要ErrorMail httpModule。

在<httpModules>部分添加这一行

 <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> 

如果您使用的是远程SMTP服务器(看起来像您),则服务器上不需要SMTP。

是的,如果您不使用远程SMTP服务器,则必须在本地configurationSMTP服务器。 您还可以在web.config中为elmahconfiguration电子邮件,如下所示:

 <configSections> <sectionGroup name="elmah"> <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah"> </sectionGroup> </configSections> <elmah> <errorMail from="from Mail Address" to="to mail address" async="true" smtpPort="0" useSsl="true" /> </elmah> <system.net> <mailSettings> <smtp deliveryMethod ="Network"> <network host="smtp.gmail.com" port="587" userName="yourgmailEmailAddress" password="yourGmailEmailPassword" /> </smtp> </mailSettings> </system.net> 

我已经在这个configuration中使用了Elmah,而且我必须在本地使用SMTP来设置服务器。 这是一个直接安装在本地IIS服务器上。 这应该做的伎俩。

上面的好点,你需要errorMail模块,但如果你不使用远程SMTP服务器,你需要本地SMTP,只是为了澄清。