Usuário com melhor resposta
Como enviar e-mail por uma aplicação windows service ?

Pergunta
-
Eu tenho um windows service e gostaria que fosse enviado um e-mail sempre que um arquivo for criado em uma pasta específica. A parte que faz o reconhecimento que o arquivo novo foi criado eu terminei. Agora como poderia colocar no código abaixo um processo de envio de e-mail. Lembrando que vou utilizar um servidor SMTP que exige autenticação.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using System.IO; //Namespace utilizado para o envio de e-mail //using System.Web; //using System.Configuration; //using System.Net.Mail; namespace AvisoJornal { public partial class AvisoJornal : ServiceBase { public AvisoJornal() { InitializeComponent(); } //Objeto responsável por observar a pasta FileSystemWatcher watcher = new FileSystemWatcher(); //Inicializando o serviço protected override void OnStart(string[] args) { //Observador da pasta watcher.Path = @"c:\temp\"; watcher.Created += new FileSystemEventHandler(watcher_Changed); watcher.EnableRaisingEvents = true; } public void watcher_Changed(object sender, FileSystemEventArgs e) { //TODO: Para teste em ambiente de teste Debug.Print("Directory Changed: " + e.ChangeType + " " + e.FullPath + System.Environment.NewLine); // ******************* AQUI ***************************** //Enviar um e-mail avisando o usuário // Begin watching. watcher.EnableRaisingEvents = true; } protected override void OnStop() { } } }
Guilherme Costa
Email: guilerme18@hotmail.comSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
Respostas
-
Eu fiz de uma maneira mais simples:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using System.IO; //Namespace utilizado para o envio de e-mail using System.Web; using System.Configuration; using System.Net.Mail; namespace AvisoJornal { public partial class AvisoJornal : ServiceBase { public AvisoJornal() { InitializeComponent(); } //Objeto responsável por observar a pasta FileSystemWatcher watcher = new FileSystemWatcher(); //Inicializando o serviço protected override void OnStart(string[] args) { //Observador da pasta watcher.Path = @"c:\temp\"; watcher.Created += new FileSystemEventHandler(watcher_Changed); watcher.EnableRaisingEvents = true; } public void watcher_Changed(object sender, FileSystemEventArgs e) { //TODO: Para teste em ambiente de teste Debug.Print("Directory Changed: " + e.ChangeType + " " + e.FullPath + System.Environment.NewLine); // ******************* AQUI ***************************** //Enviar um e-mail avisando o usuário SmtpClient server = new SmtpClient("smtp.teste"); MailMessage email = new MailMessage(); email.From = new MailAddress("guilherme@teste.com"); email.To.Add("guilherme@teste.com"); email.Subject = "Título do e-mail"; email.Body = "Corpo do email"; try { server.Send(email); Debug.Print("E-mail enviado com sucesso"); } catch (SmtpFailedRecipientException error) { Debug.Print("Erro no envio do e-mail: " + error); } // Begin watching. watcher.EnableRaisingEvents = true; } protected override void OnStop() { } } }
Só fiquei com dúvida de como que eu faria para colocar setar o usuário e senha para autenticação do SMTP.
Guilherme Costa
Email: guilerme18@hotmail.comSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta Guilherme Costa - Campinas - SP quarta-feira, 18 de janeiro de 2012 11:58
Todas as Respostas
-
Amigo, aqui o que precisa:
http://www.codeproject.com/KB/webservices/WsEmailNotification.aspx
Abraços...
Evandro Aguiar
http://wta3.com.br
Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh- Sugerido como Resposta Vitor Mendes quarta-feira, 18 de janeiro de 2012 11:47
-
Eu fiz de uma maneira mais simples:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using System.IO; //Namespace utilizado para o envio de e-mail using System.Web; using System.Configuration; using System.Net.Mail; namespace AvisoJornal { public partial class AvisoJornal : ServiceBase { public AvisoJornal() { InitializeComponent(); } //Objeto responsável por observar a pasta FileSystemWatcher watcher = new FileSystemWatcher(); //Inicializando o serviço protected override void OnStart(string[] args) { //Observador da pasta watcher.Path = @"c:\temp\"; watcher.Created += new FileSystemEventHandler(watcher_Changed); watcher.EnableRaisingEvents = true; } public void watcher_Changed(object sender, FileSystemEventArgs e) { //TODO: Para teste em ambiente de teste Debug.Print("Directory Changed: " + e.ChangeType + " " + e.FullPath + System.Environment.NewLine); // ******************* AQUI ***************************** //Enviar um e-mail avisando o usuário SmtpClient server = new SmtpClient("smtp.teste"); MailMessage email = new MailMessage(); email.From = new MailAddress("guilherme@teste.com"); email.To.Add("guilherme@teste.com"); email.Subject = "Título do e-mail"; email.Body = "Corpo do email"; try { server.Send(email); Debug.Print("E-mail enviado com sucesso"); } catch (SmtpFailedRecipientException error) { Debug.Print("Erro no envio do e-mail: " + error); } // Begin watching. watcher.EnableRaisingEvents = true; } protected override void OnStop() { } } }
Só fiquei com dúvida de como que eu faria para colocar setar o usuário e senha para autenticação do SMTP.
Guilherme Costa
Email: guilerme18@hotmail.comSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta Guilherme Costa - Campinas - SP quarta-feira, 18 de janeiro de 2012 11:58