none
Como enviar e-mail por uma aplicação windows service ? RRS feed

  • 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.com

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

    quarta-feira, 18 de janeiro de 2012 11:30

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

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

    quarta-feira, 18 de janeiro de 2012 11:57

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
    quarta-feira, 18 de janeiro de 2012 11:45
  • 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.com

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

    quarta-feira, 18 de janeiro de 2012 11:57