• Categoria do post:C# - Visual Studio
  • Tempo de leitura:4 minutos de leitura
Ads

Olá Pessoal, nesta aula vamos utilizar a classe nativa System.Net.Mail do .Net para enviar e-mails a partir de um servidor SMTP. Para este exemplo usei um exemplo de um form de login conforme imagem;

Form de login com recuperação de senha por e-mail

O banco de dados MySQL foi estruturado da seguinte forma;

Classe de Conexão MySQL

Para este projeto é necessário criar uma classe de conexão, já vimos aqui no blog como criar uma, então lá vai o código da classe Model.cs.

Não se esqueça de adicionar as referências do MySQL, veja a aula aqui – Conectando o MySQL ao Visual Studio

class Model
    {
        String servidor = "localhost";
        String database = "bd_sisteminha";
        String Uid = "root";
        String pwd = "usbw";

        // SELECT
        public MySqlDataReader ExecuteReader(String sql)
        {
            MySqlConnection conectar = new MySqlConnection("server=" + servidor + ";database=" + database + "; Uid=" + Uid + "; pwd=" + pwd + ";port=3307;");
            conectar.Open();
            MySqlCommand Consulta = new MySqlCommand();
            Consulta.Connection = conectar;
            Consulta.CommandText = sql;
            MySqlDataReader dados = Consulta.ExecuteReader();
            return dados;
        }
    }

A classe de envio de e-mail

Agora vamos para a classe Mail.cs. Para esta classe será necessário importar a classe System.Net.Mail

class Mail
    {
        Model conecta = new Model();        
        public String EnviaMail(String destino)
        {
            String msg = "Tentando enviar e-mail...";
            if (destino == "")
            {
                msg = "Por favor, informe seu e-mail";
                return msg;
            }
            String ExecutaLogin = "SELECT * FROM tb01_usuarios " +
                                  "WHERE usuario_mail = '" + destino + "'";
            MySqlDataReader Resultado = conecta.ExecuteReader(ExecutaLogin);

            String nome = "";
            String email = "";
            String senha = "";

            if (Resultado.HasRows)
            {
                while (Resultado.Read())
                {
                    nome = Resultado["usuario_nome"].ToString();
                    email = Resultado["usuario_mail"].ToString();
                    senha = Resultado["usuario_senha"].ToString();
                }
            }
            else
            {
                msg = "E-mail não encontrado!";
                
                return msg;
            }

            SmtpClient client = new SmtpClient();
            client.Host = "smtp.office365.com";
            client.EnableSsl = true;
            client.Credentials = new System.Net.NetworkCredential("[email protected]", "suasenha");
            MailMessage mail = new MailMessage();
            mail.Sender = new System.Net.Mail.MailAddress("[email protected]", "Sistema do Anderson");
            mail.From = new MailAddress("[email protected]", "Sistema do Anderson");
            mail.To.Add(new MailAddress(email, nome));
            mail.Subject = "Lembrete de senha";
            mail.Body = "Olá " + nome + "! Sua senha é: " + senha;
            mail.IsBodyHtml = true;
            mail.Priority = MailPriority.High;
            try
            {
                client.Send(mail);
                msg = "Email enviado com sucesso!";
            }
            catch (System.Exception erro)
            {
                msg = "Erro ao enviar e-mail: ";
            }
            finally
            {
                mail = null;
            }
            return msg;
        }
    }

Programando o envio do e-mail

Agora vamos programar o botão Esqueci que criamos no formulário, este botão será responsável por verificar no banco e fazer o envio, o código é muito simples;

Mail EnviaMail = new Mail();            
MessageBox.Show(EnviaMail.EnviaMail(txtMail.Text));

Download exemplo – aplicação C# com recuperação de senha por e-mail

O download a seguir possui uma classe para envio de e-mails, para alguns antivírus e navegadores isso pode ser tachado como um “download incomum” justamente por haver um mecanismo de envio de e-mails. Por este motivo eu coloquei uma senha.

Senha: blogson.com.br

Você pode fazer o download completo desta aplicação aqui: Aplicação C# Windows Forms de Login com Recuperação de Senha por e-Mail

Ads

Anderson Oliveira

Anderson Oliveira é desenvolvedor, escritor e docente no CEETPS - Centro Estadual de Educação Tecnologia de São Paulo. Atualmente trabalha na Administração Central do CPS e leciona aulas de programação na Etec Prof. Carmine Biagio Tundisi de Atibaia.