Приложение log4net smtp не отправляет электронные письма

Я пытаюсь реализовать log4net для отправки электронной почты.
Ниже приведен мой код, но он не отправляет электронные письма.

 <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
  <to value="...." />
  <from value="..." />
  <subject value="Logging Message" />
  <smtpHost value="smtp.gmail.com" />
  <port value="465"/>
  <authentication value="Basic" />
  <username value="..."/>
  <password value="..."/>
  <EnableSsl value="true" />
  <bufferSize value="1" />
  <lossy value="true" />
  <evaluator type="log4net.Core.LevelEvaluator">
    <threshold value="WARN"/>
  </evaluator>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception" />
  </layout>
</appender>

и

<root>
  <level value="WARN" />
  <appender-ref ref="SmtpAppender" />
</root>

в AssemblyInfo.cs

 [assembly: log4net.Config.XmlConfiguratorAttribute(Watch = true)]

и вот как я создаю объект журнала

  private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

Эта конфигурация отлично работает для вывода в файл, то есть для RollingFileAppender, но не для SmtpAppender.

N Я пробовал много решений из Интернета, но они не очень помогли.

Пожалуйста, покажите мне правильное направление. заранее спасибо :)


person pirate-eir    schedule 20.03.2013    source источник
comment
как выглядят настройки SMTP в вашем файле конфигурации, можете ли вы показать ту часть конфигурации, которая вам нужна SMTP.Appender   -  person MethodMan    schedule 20.03.2013
comment
Отказ от отправки электронных писем действительно очень расплывчатый. Проблема могла быть во многих местах. Ваш первый шаг - использовать SMTP-хост, которым вы можете управлять. Это сузит проблему до того, использует ли он приложение или нет, отклоняет ли SMTP-хост сообщения. (Это очень большая разница.) Попробуйте использовать что-нибудь вроде smtp4dev (smtp4dev.codeplex.com) в качестве локального Узел SMTP, чтобы проверить, делает ли регистратор по крайней мере то, что вы думаете.   -  person David    schedule 20.03.2013
comment
Насколько я помню, Gmail поддерживает SMTP только через шифрованное соединение. И я сомневаюсь, что простой stmp appender сможет это установить.   -  person alex    schedule 20.03.2013
comment
Я только что проверил свой ответ, используя свою учетную запись gmail, и он работает с использованием log4net Appender C # .NET 4.0 VS2010, поэтому не уверен, почему мой ответ вам не помог. Я пометил свой ответ для удаления, удачи, также нужно посмотреть, как выглядит ваш код в отношении того, как вы отправляете свои учетные данные ..   -  person MethodMan    schedule 20.03.2013
comment
Ваша проблема также выглядит так, как будто вы не получаете правильное имя регистратора, например var log = LogManager.GetLogger("SMTPAppender");, тогда вам нужно будет сделать это также, чтобы прочитать конфигурацию log4net.Config.XmlConfigurator.Configure();   -  person MethodMan    schedule 20.03.2013
comment
В моем случае мне нужно установить Allow apps that use less secure sign in на gmail, см. stackoverflow.com/a/50733852/4573839   -  person yu yang Jian    schedule 07.06.2018


Ответы (3)


Я использую приложение для SMTP-сообщений, очень похожее на Gmail, но в моем случае я использую другой порт:

<port value="587"/>

Все остальные настройки такие же, так что попробуйте и посмотрите, сработает ли он для вас. Это порт, который Gmail использует для TLS, упоминается здесь.

person David    schedule 20.03.2013

Тем, кто сталкивается с проблемами с SmtpAppender, я бы рекомендовал добавить следующее в ваш узел appSettings.

<appSettings>
  <add key="log4net.Internal.Debug" value="true"/>
</appSettings>

Затем он выведет диагностику, подобную приведенной ниже, чтобы указать вам правильное направление.

log4net: Setting Property [From] to String value [[email protected]]
log4net: Setting Property [Subject] to String value [Kodiak OMS Shortcode service]
log4net: Setting Property [SmtpHost] to String value [mail.sip.is]
log4net: Setting Property [Port] to Int32 value [25]
log4net: Setting Property [BufferSize] to Int32 value [1]
log4net: Setting Property [EnableSsl] to Boolean value [True]
log4net: Setting Property [Threshold] to Level value [DEBUG]
log4net: Setting Property [Lossy] to Boolean value [False]
log4net: Converter [message] Option [] Format  [min=-1,max=2147483647,leftAlign=False]
log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: Setting Property [ConversionPattern] to String value [%utcdate [%level] - %message%newline%exception]
log4net: Converter [utcdate] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: Converter [literal] Option [ [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: Converter [level] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: Converter [literal] Option [] - ] Format [min=-1,max=2147483647,leftAlign=False]
log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: Converter [exception] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: Setting Property [Layout] to object [log4net.Layout.PatternLayout]
log4net: Created Appender [EmailLog]
log4net: Adding appender named [EmailLog] to logger [EmailLogger].
log4net: Hierarchy Threshold []
log4net:ERROR [SmtpAppender] ErrorCode: GenericFailure. Error occurred while sending e-mail notification.
System.Net.Mail.SmtpException: Server does not support secure connections.
   at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)
   at System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint)
   at System.Net.Mail.SmtpClient.GetConnection()
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   at log4net.Appender.SmtpAppender.SendEmail(String messageBody)
   at log4net.Appender.SmtpAppender.SendBuffer(LoggingEvent[] events)
person tomasat    schedule 19.12.2017
comment
У меня такая же проблема ... где вы это видите ... вывод диагностики - person Ziggler; 08.01.2019
comment
@Ziggler в окне вывода Visual Studio - person Zafar; 06.03.2019

Пожалуйста, посмотрите мой рабочий пример. Если вы используете двухфакторную аутентификацию с GMail, не забудьте сгенерировать пароль и использовать его здесь:

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
  <to value="****" />
  <from value="****" />
  <subject value="Crash log" />
  <smtpHost value="smtp.gmail.com" />
  <authentication value="Basic" />
  <port value="587" />
  <username value="****" />
  <password value="****" />
  <bufferSize value="10" />
  <EnableSsl value="true"/>
  <lossy value="true" />
  <threshold value="DEBUG" />
  <evaluator type="log4net.Core.LevelEvaluator">
    <threshold value="WARN"/>
  </evaluator>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date{dd/MM/yyyy hh:mm:ss.fff}&#9;%-5level&#9;%-15logger&#9;%message%newline" />
  </layout>
</appender>

Надеюсь, поможет.

person irriss    schedule 06.02.2014