2016-08-06 5 views
2

Я пытаюсь настроить 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

Я видел несколько сообщений на эту же ошибку, но ни одно из предложений не работало.

ELMAH регистрирует ошибки SQL Server.

Кроме того, я могу отправить почту SMTP, используя те же учетные данные, которые ELMAH использует, так что я не думаю, что есть ошибка аутентификации:

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 содержит folowing информацию 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="[email protected], [email protected]" /> 
    <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="[email protected]" to="mySendTo" subject="MySubject" async="false" smtpPort="587" useSSL="true"/> 
    </elmah> 

</configuration> 

версия ELMAH в использовании является 1.2.13605.0

Я попробовал его в Dev окружающей среде, которая не использует SSL и в в тестовой среде , который имеет сертификат SSL. Оба имеют ту же ошибку.

Я пробовал многие рекомендации, содержащиеся в сообщениях SO, но никто не работал. Вот некоторые из них:
Unable to configure mail for Elmah
Send email from Elmah?
Elmah not sending Email
elmah - cannot email exceptions

ответ

1

Я не уверен, если это исправляет проблему, но я попытался проверки вашего web.config с помощью ELMAH Configuration Validator. Это дает следующий результат:

  • Атрибут «allowRemoteAccess» недействителен - значение «да» является недействительным в соответствии с его типом данных «http://www.w3.org/2001/XMLSchema:boolean» - строка «да» не является допустимым Логическое значение.
  • Атрибут 'useSSL' не объявлен.

Вы можете рассмотреть возможность изменения allowRemoteAccess на «true», но «да», вероятно, работает. То, что я ищу в результате, является атрибутом useSSL. Попробуйте переименовать это в 'useSsl' и посмотрите, работает ли это. Валидатор принимает «useSsl», но не «useSSL».

+0

Я переименовал useSSL для использованияSsl, и он сработал! Спасибо за помощь. – John

Смежные вопросы