发送电子邮件给Elmah?

Mar*_*ski 87 .net asp.net elmah

有人使用Elmah通过电子邮件发送例外吗?我已经通过SQL Server设置了Elmah日志记录,并且可以通过Elmah.axd页面查看错误页面,但我无法使电子邮件组件正常工作.这里的想法是获取电子邮件通知,以便我们可以更快地对异常做出反应.这是我的web.config(省略了不必要的部分),所有敏感数据都被***取代.即使我指定要连接的服务器,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>
Run Code Online (Sandbox Code Playgroud)

Ton*_*nyB 79

您需要ErrorMail httpModule.

在<httpModules>部分中添加此行

<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
Run Code Online (Sandbox Code Playgroud)

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


Ana*_*tel 65

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

<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>
Run Code Online (Sandbox Code Playgroud)

  • 这很有效.我没有意识到ELMAH可以挂钩到标准的mailSettings部分.smtpPort ="0"属性有点奇怪. (4认同)

Rob*_*net 5

我在这个配置中自己使用了Elmah,我不得不在本地使用SMTP设置服务器.它是您本地IIS服务器上的直接安装.这应该可以解决问题.

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