关于.net:发送来自Elmah的电子邮件?

关于.net:发送来自Elmah的电子邮件?

Send email from Elmah?

是否有人使用Elmah通过电子邮件发送例外? 我已经通过SQL Server设置了Elmah日志记录,并且可以通过Elmah.axd页面查看错误页面,但是我无法使电子邮件组件正常工作。 这里的想法是获取电子邮件通知,以便我们可以更快地对异常做出反应。 这是我的web.config(省略不必要的部分),所有敏感数据都替换为* * *。 即使我指定要连接的服务器,SMTP服务是否仍需要在本地计算机上运行?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?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>
   
    <connectionStrings>
       
    </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"/>
           
           
           
           
        </httpHandlers>
        <httpModules>
           
           
        </httpModules>
    </system.web>

</configuration>

您需要ErrorMail httpModule。

部分中添加此行

1
 

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


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<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>


我本人在此配置中使用过Elmah,因此必须在本地使用SMTP设置服务器。 它是在本地IIS服务器上的直接安装。 这应该可以解决问题。

上面的要点是,如果不使用远程SMTP服务器,则需要使用errorMail模块,但为了澄清起见,您需要在本地使用SMTP。


推荐阅读