Kirim email dari Elmah?

87

Apakah ada yang menggunakan Elmah untuk mengirim pengecualian melalui email? Saya telah menyiapkan logging Elmah melalui SQL Server, dan dapat melihat halaman error melalui halaman Elmah.axd, tetapi saya tidak dapat mengaktifkan komponen email. Idenya di sini adalah untuk mendapatkan notifikasi email sehingga kami dapat bereaksi lebih cepat terhadap pengecualian. Inilah web.config saya (bagian yang tidak perlu dihilangkan), dengan semua data sensitif diganti dengan * * *. Meskipun saya menentukan server untuk disambungkan, apakah layanan SMTP perlu dijalankan pada mesin lokal?

<?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="[email protected]"
           to="[email protected]"
           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>
Mark Struzinski
sumber

Jawaban:

79

Anda membutuhkan httpModule ErrorMail.

tambahkan baris ini di dalam bagian <httpModules>

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

Jika Anda menggunakan server SMTP jarak jauh (yang terlihat seperti Anda), Anda tidak memerlukan SMTP di server.

TonyB
sumber
1
Apakah ada cara untuk mengonfigurasi pekerjaan harian untuk mengirim kesalahan gabungan?
Chaitanya Gadkari
65

Ya, jika Anda tidak menggunakan server SMTP jauh, Anda harus memiliki Server SMTP yang dikonfigurasi secara lokal. Anda juga dapat mengkonfigurasi email untuk elmah di web.config sebagai berikut:

<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>
Anand Patel
sumber
4
Ini bekerja dengan baik. Saya tidak menyadari bahwa ELMAH dapat terhubung ke bagian mailSettings standar. Atribut smtpPort = "0" agak aneh.
Ben Mills
1
smtpPort = "0" tampaknya tidak diperlukan karena menggunakan port yang ditentukan di bawah system.net; saat menjalankan dengan server pengembangan saya harus mengatur useSsl = "false" atau itu akan merusak server (mungkin karena saya tidak mengatur SSL)
Răzvan Flavius ​​Panda
Saya menemukan urutan elemen menjadi signifikan. Menentukan system.net SETELAH elmah GAGAL. Sistem ELMAH bertindak seperti tidak ada server email yang ditentukan. Menempatkan system.net terlebih dahulu membuatnya berfungsi.
Mark Meuer
Jika saya menggunakan pengaturan di atas, siapa pun yang mengakses file web.config akan mengetahui kata sandi email saya, bukan?
dipecahkan
5

Saya telah menggunakan Elmah sendiri dalam konfigurasi ini dan saya harus mengatur server dengan SMTP secara lokal. Ini adalah penginstalan langsung di server IIS lokal Anda. Ini seharusnya berhasil.

Poin bagus di atas, Anda memerlukan modul errorMail TETAPI jika Anda tidak menggunakan server SMTP jarak jauh, Anda memerlukan SMTP secara lokal, hanya untuk memperjelas.

Rob Bazinet
sumber