2012-01-07 30 views
29

Tôi đang sử dụng NLog lần đầu tiên, tôi đã tìm ra cách viết vào một tệp văn bản, nhưng bây giờ tôi muốn gửi một email cho chính tôi. đang làm cho giả định rằng khi bạn cung cấp thông tin đăng nhập SMTP cho NLog. Việc lắp ráp gọi không gian tên System.Net.Mail và xử lý việc gửi một email. Nếu điều này là sai, xin vui lòng cho tôi biết. Và nếu bạn đã làm điều này trước khi tôi sẽ đánh giá cao bất kỳ thông tin về những gì nó đã bạn để thực hiện gửi email.Làm cách nào để gửi các lỗi email đã đăng nhập bằng NLog?

Dưới đây là cấu hình của tôi.

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > 
    <targets> 
    <!--<target name="logfile" xsi:type="File" fileName="C:\Users\keithb\Desktop\TestLog.txt" />--> 
    <target name="Mail" xsi:type="Mail" html="true" subject="Error Received" body="${message}"   
     to="[email protected]" 
     from="[email protected]" 
     Encoding="UTF8" 
     smtpUsername="[email protected]" 
     enableSsl="False" 
     smtpPassword="pa$$word" 
     smtpAuthentication="Basic" 
     smtpServer="mail.someemail.com" 
     smtpPort="25" /> 
    </targets> 
    <rules> 
    <!--<logger name="*" minlevel="Debug" writeTo="logfile" />--> 
    <logger name="*" level="Error" writeTo="Mail" /> 
    <logger name="*" level="Fatal" writeTo="Mail" /> 
    </rules> 
</nlog> 

tôi gọi là lỗi như vậy

Imports NLog 

Public Class HandleGetRouteInfo 
    Private Shared logger As Logger = LogManager.GetCurrentClassLogger() 

    Public Shared Function GetRouteInfo(ByVal routeInfo As RequestGetRouteInfo) As GetRouteInfoResponse 
     'TODO: Check route ID, username, password 
     logger.Fatal("User" & routeInfo.UserName & "has entered the GetRouteInfo Method.") 
     logger.Error("User" & routeInfo.UserName & "has entered the GetRouteInfo Method.") 
     Dim str As String = logger.Name 
End Function 
End Class 

Tôi cố gắng để có được nó để gửi báo lỗi, có chứa tin nhắn, và những điều nó thường đăng nhập vào một tập tin, email của tôi. Tôi biết cách bắt các ngoại lệ và gửi email cho chính mình, nhưng tôi nghĩ NLog có khả năng thực hiện điều này. Bất kỳ hướng dẫn nào có ví dụ đơn giản về việc sử dụng chức năng email sẽ hoạt động. Tôi tìm thấy rất nhiều thứ nhưng không thể làm cho nó hoạt động được. Nếu bạn đã làm điều này, một số mẫu mã hoặc giải thích về những gì khác tôi cần phải làm sẽ giúp đỡ. Tôi không thể tìm ra những gì tôi đang làm sai. Ai có ý tưởng gì không?

Trả lời

19

Thay đổi mã hóa của bạn từ UTF8 thành UTF-8.

Giả sử không có lỗi nào khác trong cài đặt SMTP của bạn (thường là nguyên nhân của thư không được gửi), nó sẽ hoạt động.

+0

Đó là nó, UTF8 được cho là UTF-8. Ví dụ tôi tìm thấy có một sai lầm. Cảm ơn bạn. –

2

Tôi nghĩ bạn cần thiết lập các cài đặt mail trong system.net. Một cái gì đó như thế này:

<system.net> 
    <mailSettings> 

    <smtp from="[email protected]"> 
     <network host="server.net" userName="[email protected]" password="somepassword"/> 
    </smtp> 

    <!--Just and example of for testing. Cant have both--> 
    <smtp deliveryMethod="SpecifiedPickupDirectory" from="[email protected]"> 
     <network host="localhost"/> 
     <specifiedPickupDirectory pickupDirectoryLocation="d:\tmp\email"/> 
    </smtp> 

    </mailSettings> 
</system.net> 

Tùy chọn đầu tiên là sử dụng máy chủ SMTP và thứ hai để gửi email đến thư mục cục bộ của bạn. Lựa chọn thứ hai là tốt để thử nghiệm.

+0

Vì vậy, tôi cần tạo email và lưu nó? Tại sao tôi không chỉ viết một lớp đăng nhập và viết một lớp khác để gửi email. Tôi đã không làm điều đó trước đây. Không có hành vi phạm tội này chỉ được đề nghị vì vậy tôi nghĩ rằng các lỗi gửi email hoặc bất kỳ đăng nhập sẽ chết đơn giản. –

+0

Tôi tò mò những gì bạn sử dụng để đăng nhập, rất nhiều người tôi thấy sử dụng log4 net và elmah. –

+0

Elmah để xử lý ngoại lệ chung và log4net để xử lý ghi nhật ký chi tiết khi gỡ lỗi. –

Các vấn đề liên quan