87 votes

Envoyer un courriel à partir d'Elmah ?

Quelqu'un utilise-t-il Elmah pour envoyer des exceptions par e-mail ? J'ai mis en place la journalisation Elmah via SQL Server, et je peux voir la page d'erreurs via la page Elmah.axd, mais je n'arrive pas à faire fonctionner le composant email. L'idée ici est d'obtenir la notification par email afin que nous puissions réagir plus rapidement aux exceptions. Voici mon web.config (sections inutiles omises), avec toutes les données sensibles remplacées par * * *. Même si je spécifie un serveur auquel me connecter, le service SMTP doit-il être exécuté sur la machine locale ?

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

79voto

TonyB Points 2482

Vous avez besoin du httpModule ErrorMail.

ajoutez cette ligne à l'intérieur de la section <httpModules>.

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

Si vous utilisez un serveur SMTP distant (ce qui semble être le cas), vous n'avez pas besoin de SMTP sur le serveur.

65voto

Anand Patel Points 384

Oui, si vous n'utilisez pas de serveur SMTP distant, vous devez avoir un serveur SMTP configuré localement. Vous pouvez également configurer l'e-mail pour elmah dans le web.config comme suit :

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

5voto

Rob Bazinet Points 790

J'ai moi-même utilisé Elmah dans cette configuration et j'ai dû configurer le serveur avec SMTP localement. Il s'agit d'une installation simple sur votre serveur IIS local. Cela devrait faire l'affaire.

Bon point ci-dessus, vous avez besoin du module errorMail MAIS si vous n'utilisez pas un serveur SMTP distant vous avez besoin du SMTP local, juste pour clarifier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X