2013-03-20 237 views
8

我想實現log4net發送電子郵件。
以下是我的代碼,但它不發送電子郵件。log4net smtp appender不發送電子郵件

<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我嘗試了很多來自互聯網的解決方案,但並沒有真正的幫助。

請讓我看看正確的方向。 thankx提前:)

+0

什麼呢SMTP設置看起來像你的配置文件,您可以顯示你所需要的配置的那部分'SMTP.Appender' – MethodMan 2013-03-20 12:33:27

+1

「不發送電子郵件」真的很模糊。問題可能出現在很多地方。您的第一步是使用您可以控制的SMTP主機。這將縮小問題是否使用appender與SMTP主機是否拒絕消息。 (這是一個非常大的差異。)嘗試使用類似smtp4dev(http://smtp4dev.codeplex.com)作爲本地SMTP主機來測試記錄器是否至少按照您認爲正在執行的操作。 – David 2013-03-20 12:34:22

+0

據我所知,Gmail只支持通過加密連接的SMTP。我懷疑樸素ap ap可以建立它。 – alex 2013-03-20 12:35:03

回答

6

我使用SMTP郵件給Gmail一個非常類似的附加目的地,但對我來說我使用不同的端口:

<port value="587"/> 

所有其他設置都是一樣的,所以給試試看看它是否適合你。這是Gmail用於TLS的端口,referenced here

0

請參閱我的工作示例。如果您使用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> 

希望它有幫助。

0

對於遇到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)