Enviar e-mail usando C# e autenticando pela conta do Google
Você precisa utilizar envio de e-mail e está querendo usar a sua conta do Gmail para isso. Pode fazê-lo seguindo os passos abaixo.
Uma classe para fazer o teste
Criei uma aplicação console em C# (.Net 5) e além da classe principal eu criei uma classe chamada EmailServico cujo exemplo segue no pré-formatado.
using System;
using System.Configuration;
using System.Net;
using System.Net.Mail;
using System.Text;
namespace EnvioEmail
{
public class EmailServico : MailMessage
{
#region Private Fields
private readonly string EMAIL_HOST = ConfigurationManager.AppSettings["emailServico:email_host"];
private readonly string EMAIL_ORIGEM = ConfigurationManager.AppSettings["emailServico:email_remetente"];
private readonly string EMAIL_SENHA = ConfigurationManager.AppSettings["emailServico:email_senha"];
#endregion Private Fields
#region Public Methods
public void MandarEmail(MailMessage mensagem)
{
try
{
using (var mensagemEmail = new MailMessage())
{
mensagemEmail.From = new MailAddress(EMAIL_ORIGEM);
mensagemEmail.To.Add(new MailAddress(mensagem.To.ToString()));
mensagemEmail.Subject = mensagem.Subject;
mensagemEmail.Body = mensagem.Body;
mensagemEmail.BodyEncoding = Encoding.UTF8;
mensagemEmail.BodyEncoding = Encoding.GetEncoding("ISO-8859-1");
mensagemEmail.Priority = MailPriority.Normal;
using (var smtpCliente = new SmtpClient())
{
smtpCliente.Host = EMAIL_HOST;
smtpCliente.Port = 587;
smtpCliente.EnableSsl = true;
smtpCliente.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpCliente.Credentials = new NetworkCredential(EMAIL_ORIGEM, EMAIL_SENHA);
smtpCliente.UseDefaultCredentials = false;
smtpCliente.Send(mensagemEmail);
}
}
}
catch (SmtpFailedRecipientException ex)
{
Console.WriteLine("Mensagem : {0} " + ex.Message);
return;
}
catch (SmtpException ex)
{
Console.WriteLine("Mensagem SMPT Fail : {0} " + ex.Message);
return;
}
catch (Exception ex)
{
Console.WriteLine("Mensagem Exception : {0} " + ex.Message);
return;
}
Console.WriteLine("Email enviado com sucesso! Digite 0 para sair.");
Console.Read();
}
#endregion Public Methods
}
}
Para autenticar no Google
O Gmail não permite que você coloque simplesmente seu e-mail e senha da sua conta para poder enviar e-mails da sua aplicação. Você tem que criar uma credencial junto a administração da sua conta para isso. Depois você vai usar a senha desta credencial para usar, siga os passos abaixo:
- Já logado no Google, vá no ícone da sua conta e clique em “Gerenciar sua Conta do Google”:

- Selecione a opção “Segurança”:

- Entre na “Verificação em duas etapas”, confirme sua senha e ative a verificação.

- Selecione a opção “Senhas de app” para gerar a senha
![]()
- Nesta tela que você entrou selecione a opção “Selecionar app”
- Escolha a opção “Outro (nome personalizado)”
- Neste momento informe o nome do seu site ou webapp, clique em “Gerar”
- Copie a senha gerada pelo google como na janela abaixo:

- Eu copiei a senha, o usuário e o host para o app.config, mas você pode colocar em outro arquivo de configuração
<?xml version=”1.0″ encoding=”utf-8″ ?>
<configuration>
<appSettings>
<add key=”emailServico:email_host” value=”smtp.gmail.com” />
<add key=”emailServico:email_remetente” value=”seuemail@gmail.com” />
<add key=”emailServico:email_senha” value=”suasenhagerada” />
</appSettings>
</configuration>
Uma Console.App de exemplo
Fiz um exemplo para testar e disponibilizei no GitHub. Pode clicar aqui para clonar e rodar.
