如何从 ELMAH 发送电子邮件?
how to send email from ELMAH?
我正在尝试配置 ELMAH 以发送电子邮件,但我收到以下错误:
Server Error in '/' Application.
The SMTP server requires a secure connection or the client was not
authenticated. The server response was: 5.7.0 Must issue a STARTTLS
command first. 59sm11486886otw.9 - gsmtp
我已经看到几个关于同样错误的帖子,但 none 的建议都奏效了。
ELMAH 正在将错误记录到 SQL 服务器。
此外,我可以使用 ELMAH 使用的相同凭据发送 SMTP 邮件,所以我认为我没有身份验证错误:
MailMessage mailx = new MailMessage();
mailx.To.Add("mySendTo");
mailx.From = new MailAddress("mySendFrom");
mailx.Subject = "My Subject";
mailx.Body = string.Format("My email body");
mailx.IsBodyHtml = true;
SmtpClient smtpx = new SmtpClient();
smtpx.Host = "smtp.gmail.com";
smtpx.Port = 587;
smtpx.UseDefaultCredentials = false;
smtpx.Credentials = new System.Net.NetworkCredential("MyLoginUser", "MyLoginPwd");
smtpx.EnableSsl = true;
smtpx.Send(mailx);
Web.Config 包含以下 ELMAH 信息:
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, 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>
<add key="elmah.mvc.disableHandler" value="false" />
<add key="elmah.mvc.disableHandleErrorFilter" value="false" />
<add key="elmah.mvc.requiresAuthentication" value="true" />
<add key="elmah.mvc.IgnoreDefaultRoute" value="false" />
<add key="elmah.mvc.allowedRoles" value="*" />
<add key="elmah.mvc.allowedUsers" value="developer1@aaa.com, developer2@aaa.com" />
<add key="elmah.mvc.route" value="elmah" />
<add key="elmah.mvc.UserAuthCaseSensitive" value="true" />
</appSettings>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
<modules>
<remove name="FormsAuthentication" />
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
</modules>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network host="smtp.gmail.com" port="587" userName="MyUserName" password="MyUserPwd" defaultCredentials="false"/>
</smtp>
</mailSettings>
</system.net>
<elmah>
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="DefaultConnection" />
<security allowRemoteAccess="yes" />
<errorMail
from="mySendFrom@gmail.com" to="mySendTo" subject="MySubject" async="false" smtpPort="587" useSSL="true"/>
</elmah>
</configuration>
正在使用的ELMAH版本是1.2.13605.0
我已经在不使用 SSL 的开发环境和具有 SSL 证书的测试环境中进行了尝试。两者都有相同的错误。
我尝试了 SO 帖子中的许多建议,但 none 奏效了。以下是其中一些:
Unable to configure mail for Elmah
Send email from Elmah?
Elmah not sending Email
elmah - cannot email exceptions
我不确定它是否解决了您的问题,但我尝试使用 ELMAH Configuration Validator 验证您的 web.config。它给出以下结果:
- 'allowRemoteAccess' 属性无效 - 根据其数据类型,值 'yes' 无效 'http://www.w3.org/2001/XMLSchema:boolean' - 字符串 'yes' 不是有效的布尔值。
- 未声明 [=25=] 属性。
您可以考虑将 allowRemoteAccess 更改为 'true',但 'yes' 可能也可以。我在结果中看到的是 'useSSL' 属性。尝试将其重命名为 'useSsl' 并查看是否有效。验证器接受 'useSsl' 但不接受 'useSSL'.
我正在尝试配置 ELMAH 以发送电子邮件,但我收到以下错误:
Server Error in '/' Application.
The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. 59sm11486886otw.9 - gsmtp
我已经看到几个关于同样错误的帖子,但 none 的建议都奏效了。
ELMAH 正在将错误记录到 SQL 服务器。
此外,我可以使用 ELMAH 使用的相同凭据发送 SMTP 邮件,所以我认为我没有身份验证错误:
MailMessage mailx = new MailMessage();
mailx.To.Add("mySendTo");
mailx.From = new MailAddress("mySendFrom");
mailx.Subject = "My Subject";
mailx.Body = string.Format("My email body");
mailx.IsBodyHtml = true;
SmtpClient smtpx = new SmtpClient();
smtpx.Host = "smtp.gmail.com";
smtpx.Port = 587;
smtpx.UseDefaultCredentials = false;
smtpx.Credentials = new System.Net.NetworkCredential("MyLoginUser", "MyLoginPwd");
smtpx.EnableSsl = true;
smtpx.Send(mailx);
Web.Config 包含以下 ELMAH 信息:
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, 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>
<add key="elmah.mvc.disableHandler" value="false" />
<add key="elmah.mvc.disableHandleErrorFilter" value="false" />
<add key="elmah.mvc.requiresAuthentication" value="true" />
<add key="elmah.mvc.IgnoreDefaultRoute" value="false" />
<add key="elmah.mvc.allowedRoles" value="*" />
<add key="elmah.mvc.allowedUsers" value="developer1@aaa.com, developer2@aaa.com" />
<add key="elmah.mvc.route" value="elmah" />
<add key="elmah.mvc.UserAuthCaseSensitive" value="true" />
</appSettings>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
<modules>
<remove name="FormsAuthentication" />
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
</modules>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network host="smtp.gmail.com" port="587" userName="MyUserName" password="MyUserPwd" defaultCredentials="false"/>
</smtp>
</mailSettings>
</system.net>
<elmah>
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="DefaultConnection" />
<security allowRemoteAccess="yes" />
<errorMail
from="mySendFrom@gmail.com" to="mySendTo" subject="MySubject" async="false" smtpPort="587" useSSL="true"/>
</elmah>
</configuration>
正在使用的ELMAH版本是1.2.13605.0
我已经在不使用 SSL 的开发环境和具有 SSL 证书的测试环境中进行了尝试。两者都有相同的错误。
我尝试了 SO 帖子中的许多建议,但 none 奏效了。以下是其中一些:
Unable to configure mail for Elmah
Send email from Elmah?
Elmah not sending Email
elmah - cannot email exceptions
我不确定它是否解决了您的问题,但我尝试使用 ELMAH Configuration Validator 验证您的 web.config。它给出以下结果:
- 'allowRemoteAccess' 属性无效 - 根据其数据类型,值 'yes' 无效 'http://www.w3.org/2001/XMLSchema:boolean' - 字符串 'yes' 不是有效的布尔值。
- 未声明 [=25=] 属性。
您可以考虑将 allowRemoteAccess 更改为 'true',但 'yes' 可能也可以。我在结果中看到的是 'useSSL' 属性。尝试将其重命名为 'useSsl' 并查看是否有效。验证器接受 'useSsl' 但不接受 'useSSL'.