Я пытаюсь использовать приложение SMTP Log 4net для программы, которую я создаю. У меня есть несколько приложений (консоль и файл), которые работают нормально; тем не менее, мой SmtpAppender работает неправильно. При попытке запустить мое приложение я получаю следующее (из-за использования key = "log 4net .Internal.Debug" value = "true"):
ErrorCode: GenericFailure. Error occurred while sending e-mail notification.
System.Net.Mail.SmtpException: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM [XXXXXXX.XXXXX.prod.outlook.com]
Мой файл app.config настроен ниже :
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{ABSOLUTE} [%logger] [%type.%method:%line] %level - %message%newline%exception"/>
</layout>
</appender>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="..\..\Logs\MyLogs.log"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maximumFileSize value="10MB"/>
<maxSizeRollBackups value="10"/>
<staticLogFileName value="true"/>
<preserveLogFileNameExtension value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{ABSOLUTE} [%logger] [%type.%method:%line] %level - %message%newline%exception"/>
</layout>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
</appender>
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender,log4net">
<to value="myusername@mycompanyemail"/>
<from value="myusername@mycompanyemail"/>
<subject value="Error Log"/>
<smtpHost value="smtp.office365.com"/>
<port value="587"/>
<username value="myusername@mycompanyemail"/>
<password value="mypassword"/>
<enableSsl value="true"/>
<bufferSize value="1"/>
<lossy value="false"/>
<evaluator type="log4net.Core.LevelEvaluator,log4net">
<threshold value="DEBUG"/> <!--For testing purposes only-->
<!--<threshold value="WARN"/>-->
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{ABSOLUTE} [%logger] [%type.%method:%line] %level - %message%newline%exception" />
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="ConsoleAppender"/>
<appender-ref ref="RollingFileAppender"/>
<appender-ref ref="SmtpAppender"/>
</root>
</log4net>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
Я не уверен, что мне не хватает, чтобы заставить это работать. Я знаю, что наши учетные записи office.com позволят это сделать, если настроены правильно. У меня есть следующая программа в powershell, которая прекрасно работает:
$SMTP_SERVER = "smtp.office365.com";
$MY_EMAIL = "myusername@mycompanyemail";
$PORT = "587";
$passwd = "mypassword";
$secpasswd = ConvertTo-SecureString $passwd -AsPlainText -Force;
$mycreds = New-Object System.Management.Automation.PSCredential $email_address, $secpasswd;
## Email Settings
$to_addr = $MY_EMAIL;
$from_addr = $MY_EMAIL;
$subject = "Test email from Powershell";
$body = "This is a test email sent from Powershell";
send-mailmessage -smtpserver $SMTP_SERVER -port $PORT -UseSsl -Credential $mycreds -from $from_addr -to $to_addr -subject $subject -body $body;
Любая помощь будет принята с благодарностью.