我正在编写一个Windows服务,它将进行大量的网络通信(在共享文件夹中复制许多文件并修改数据库)。
我需要一种方法来通知用户(如果已登录)任何异常/错误。我的问题是将错误发送到组(通过电子邮件发送)给管理员地址。
我知道事件既没有记录来自系统托盘的通知气泡,但是管理员没有查看该日志,他更喜欢电子邮件。
理想的组件是ASP.NET Health Monitoring,但仅适用于IIS,并且需要一个类似于Windows服务的组件。
C#中的任何示例应用程序Windows服务或.net中的其他语言(带源代码)有关此问题的内容?
答案 0 :(得分:2)
如果您只是需要一种发送电子邮件通知的方法,.Net有SMTP和邮件类型来处理这个问题。电子邮件通知在软件中很常见,这也是常用功能已合并到基类库中的原因。
您可以使用SmtpClient,MailAddress和MailMessage对象来完成简单发送电子邮件通知所需的内容。当然,您需要访问SMTP服务器才能传输邮件,因此请查看其主机地址是否正确配置您的应用程序。以下是一些例子:
SmtpClient mailClient = new SmtpClient("smtp.fu.bar");
MailAddress senderAddr = new MailAddress("you@fu.bar");
MailAddress recipAddr = new MailAddress("admin@fu.bar");
MailMessage emailMsg = new MailMessage( senderAddr, recipAddr );
emailMsg.Subject = "Test email.";
emailMsg.Body = "Here is my email string which serves as the body.\n\nSincerely,\nMe";
mailClient.Send( emailMsg );
这个例子只是简单的代码,但最好把它放到像这样的可重用方法中:
public void SendNotification( string smtpHost, string recipientAddress, string senderAddress, string message, string subject )
{
SmtpClient mailClient = new SmtpClient(smtpHost);
MailMessage emailMsg = new MailMessage( new MailAddress(senderAddress), new MailAddress(recipientAddress) );
emailMsg.Subject = subject;
emailMsg.Body = message;
mailClient.Send( emailMsg );
}
答案 1 :(得分:0)
检查一下:http://www.codeproject.com/Articles/16335/Simple-Windows-Service-which-sends-auto-Email-aler
我的建议是否第一次使用Windows服务(因为Windows服务很难调试)