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("seuemail@hotmail.com.br", "suasenha"); MailMessage mail = new MailMessage(); mail.Sender = new System.Net.Mail.MailAddress("seuemail@hotmail.com.br", "Sistema do Anderson"); mail.From = new MailAddress("seuemail@hotmail.com.br", "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