2013-03-20 15 views
8

Próbuję zaimplementować usługę log4net do wysyłania wiadomości e-mail.
Oto mój kod, ale nie wysyła wiadomości e-mail.Aplikacja log4net smtp appender nie wysyłająca wiadomości e-mail

<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> 

i

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

w AssemblyInfo.cs

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

iw ten sposób utworzyć obiekt dziennika

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

Ta konfiguracja działa poprawnie na wyjściu pliku np. RollingFileAppender, ale nie dla SmtpAppender.

N Próbowałem wielu rozwiązań z Internetu, ale nie były naprawdę pomocne.

Pokaż mi właściwe wskazówki. thankx z góry :)

+0

co robi SMTP ustawienia wyglądać w pliku konfiguracyjnym można pokazać tę część konfiguracji trzeba 'SMTP.Appender' – MethodMan

+1

" Nie wysyłanie e-maili "jest naprawdę, bardzo niejasne. Problem może dotyczyć wielu miejsc. Pierwszym krokiem jest użycie hosta SMTP, którym możesz sterować. Ograniczałoby to problem do tego, czy używa aplikacji dostarczającej, czy też host SMTP odrzuca wiadomości. (To bardzo duża różnica). Spróbuj użyć czegoś podobnego do smtp4dev (http://smtp4dev.codeplex.com) jako lokalnego hosta SMTP, aby przetestować, czy program rejestrujący przynajmniej wykonuje to, co myślisz, że robi. – David

+0

O ile pamiętam, Gmail obsługuje SMTP tylko przez szyfrowane połączenie. I wątpię, żeby to prosty aplikant stmp mógł to ustalić. – alex

Odpowiedz

6

używam bardzo podobny appender dla wiadomości SMTP do Gmaila, ale w moim przypadku używania innego portu:

<port value="587"/> 

Wszystkie inne ustawienia są takie same, więc dać to spróbuj i zobacz, czy to działa dla ciebie. Jest to port używany przez Gmail do TLS, referenced here.

0

Proszę zobaczyć mój przykład pracy. Jeśli używasz 2-czynnikowego uwierzytelniania w GMail, nie zapomnij wygenerować hasła i użyj go tutaj:

<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> 

Mam nadzieję, że to pomoże.

0

Dla osób, które mają problemy z SmtpAppenderem, polecam umieszczenie następujących elementów w węźle appSettings.

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

To wtedy diagnostyka wyjściowe, takie jak ten poniżej, aby skierować Cię w dobrym kierunku

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) 
Powiązane problemy