एल्माह से ईमेल भेजें?


87

क्या कोई ईमेल के माध्यम से अपवाद भेजने के लिए एल्माह का उपयोग कर रहा है? मुझे एल्मा लॉगिंग SQL सर्वर के माध्यम से मिल गई है, और एल्माह.एक्सडी पेज के माध्यम से त्रुटियों वाले पृष्ठ को देख सकते हैं, लेकिन मैं ईमेल घटक को काम करने में असमर्थ हूं। यहां विचार ईमेल अधिसूचना प्राप्त करना है ताकि हम अपवादों पर अधिक तेज़ी से प्रतिक्रिया कर सकें। यहाँ मेरा web.config (अनावश्यक अनुभागों को छोड़ दिया गया है), * * * द्वारा प्रतिस्थापित सभी संवेदनशील डेटा के साथ। भले ही मैं एक सर्वर को कनेक्ट करने के लिए निर्दिष्ट कर रहा हूं, लेकिन क्या एसएमटीपी सेवा को स्थानीय मशीन पर चलाने की आवश्यकता है?

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

आपको ErrorMail httpModule की आवश्यकता है।

इस लाइन को <httpModules> सेक्शन के अंदर जोड़ें

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

यदि आप दूरस्थ SMTP सर्वर का उपयोग कर रहे हैं (जो ऐसा दिखता है कि आप हैं) तो आपको सर्वर पर SMTP की आवश्यकता नहीं है।


1
क्या समेकित त्रुटियों को भेजने के लिए दैनिक नौकरी को कॉन्फ़िगर करने का एक तरीका है?
चैतन्य गडकरी

65

हां, यदि आप दूरस्थ SMTP सर्वर का उपयोग नहीं कर रहे हैं, तो आपके पास SMTP सर्वर स्थानीय रूप से कॉन्फ़िगर होना चाहिए। आप इस प्रकार से 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" विशेषता एक प्रकार की अजीब है।
बेन मिल्स

1
smtpPort = "0" की आवश्यकता नहीं लगती है क्योंकि यह system.net के तहत निर्दिष्ट पोर्ट का उपयोग करता है; विकास सर्वर के साथ चलने के दौरान मुझे useSsl = "false" सेट करना पड़ा, अन्यथा यह सर्वर को क्रैश कर देगा (शायद इस कारण मैंने एसएसएल सेट नहीं किया)
पांडा

मैंने तत्वों के क्रम को महत्वपूर्ण पाया। निर्दिष्ट करने वाला system.net AFTER elmah FAILED। ELMAH प्रणाली ने कार्य किया जैसे कोई मेल सर्वर परिभाषित नहीं किया गया था। System.net लगाकर सबसे पहले इसने काम किया।
मार्क मेउर

अगर मैं उपरोक्त सेटिंग्स का उपयोग करता हूं, तो web.config फ़ाइल तक किसी को भी मेरा ईमेल पासवर्ड सही पता होगा?
अटूट

5

मैंने इस कॉन्फ़िगरेशन में एल्माह का उपयोग किया है और मुझे स्थानीय रूप से एसएमटीपी के साथ सर्वर सेटअप करना पड़ा। यह आप पर सीधे IIS IIS सर्वर स्थापित है। यह काम कर जाना चाहिए।

ऊपर अच्छा बिंदु, आपको त्रुटि मॉड्यूल मॉड्यूल की आवश्यकता है यदि आप एक दूरस्थ एसएमटीपी सर्वर का उपयोग नहीं कर रहे हैं, तो आपको स्थानीय रूप से एसएमटीपी की आवश्यकता है, बस स्पष्ट करने के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.