Надіслати електронний лист від Elmah?


87

Хтось використовує Elmah для надсилання винятків електронною поштою? У мене налаштовано ведення журналу реєстрації Elmah через SQL Server, і я можу переглядати сторінку помилок через сторінку 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>

Відповіді:


79

Вам потрібен httpModule ErrorMail.

додайте цей рядок всередину розділу <httpModules>

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

Якщо ви використовуєте віддалений SMTP-сервер (яким, схоже, ви є), вам не потрібен SMTP на сервері.


1
Чи є спосіб налаштувати щоденну роботу для надсилання консолідованих помилок?
Чайтанья Гадкарі

65

Так, якщо ви не використовуєте віддалений SMTP-сервер, ви повинні мати локально налаштований SMTP-сервер. Ви також можете налаштувати електронну пошту для elmah у web.config таким чином:

<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>

4
Це спрацювало чудово. Я не розумів, що ELMAH може підключитися до стандартного розділу Налаштування пошти. Атрибут smtpPort = "0" якийсь дивний.
Ben Mills

1
smtpPort = "0", здається, не потрібен, оскільки він використовує порт, зазначений у system.net; під час роботи з сервером розробки мені довелося встановити useSsl = "false", інакше це призведе до аварійного завершення роботи сервера (можливо, тому, що я не встановив SSL)
Резван Флавій Панда

Я знайшов порядок елементів важливим. Вказівка ​​system.net ПІСЛЯ elmah FAILED. Система ELMAH діяла так, наче жоден поштовий сервер не був визначений. Спочатку розміщення system.net змусило його працювати.
Mark Meuer

Якщо я використовую вищевказані налаштування, будь-хто, хто має доступ до файлу web.config, буде знати мій пароль електронної пошти, чи не так?
Незламний

5

Я сам використовував Elmah у цій конфігурації, і мені довелося налаштувати сервер за допомогою SMTP локально. Це пряма установка на локальний сервер IIS. Це повинно зробити трюк.

Хороший момент вище, вам потрібен модуль errorMail, АЛЕ якщо ви не використовуєте віддалений SMTP-сервер, вам потрібен SMTP локально, лише для уточнення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.