Envío de correo electrónico a través del servidor SMTP de Gmail con C #

242

Por alguna razón, ni la respuesta aceptada ni ninguna otra me funcionan para " Enviar correo electrónico en .NET a través de Gmail ". ¿Por qué no iban a funcionar?

ACTUALIZACIÓN: He intentado todas las respuestas (aceptadas y no) en la otra pregunta, pero ninguna de ellas funciona.

Solo me gustaría saber si funciona para alguien más, de lo contrario, Google podría haber cambiado algo (lo que sucedió antes).

Cuando pruebo el código que usa SmtpDeliveryMethod.Network, rápidamente recibo una SmtpException en Enviar (mensaje). El mensaje es

El servidor SMTP requiere una conexión segura o el cliente no se autenticó.

La respuesta del servidor fue:

5.5.1 Se requiere autenticación. Obtenga más información en "<- en serio, termina allí.

ACTUALIZAR:

Esta es una pregunta que hice hace mucho tiempo, y la respuesta aceptada es el código que he usado muchas, muchas veces en diferentes proyectos.

He tomado algunas de las ideas en esta publicación y en otros proyectos de EmailSender para crear un proyecto de EmailSender en Codeplex . Está diseñado para la capacidad de prueba y es compatible con mis servicios SMTP favoritos, como GoDaddy y Gmail.

CVertex
fuente
Intenté hacer esto usando métodos similares en un idioma diferente. Encontré el mismo tipo de cosas: los viejos métodos documentados que funcionaban antes, no me funcionaron. Así que te preguntas si Google cambió algo o si hiciste algo mal.
AaronLS 01 de
2
@aaronls, el único cambio reciente parece estar relacionado con el puerto 465. Lo intenté mientras buscaba una solución (solo estaba trabajando en lo mismo), y el puerto 465 agota todo el tiempo. Si ese es tu caso, prueba con el puerto 587.
eglasius el
2
Este problema se debe a la "verificación de palabras" (captcha). Si inicia sesión a través de la interfaz web a mano y completa el captcha, su SMTP comenzará a funcionar.
Robert Koritnik el
44
FWIW, funciona para mí. necesitas usar 587 y .EnableSSL verdadero. c # 4 / .NET 4 actualmente no admite 465 / SSL alternativo. gmail exige configurar otros clientes de correo .
gerryLowry
1
Siga la respuesta de @eglasius y asegúrese de activar la configuración "Permitir aplicaciones menos seguras" en Gmail para permitir que gmail autentique su cuenta.
user2713706

Respuestas:

290

CVertex, asegúrese de revisar su código y, si eso no revela nada, publíquelo. Estaba habilitando esto en un sitio ASP.NET de prueba en el que estaba trabajando, y funciona.

En realidad, en algún momento tuve un problema con mi código. No lo detecté hasta que tuve una versión más simple en un programa de consola y vi que estaba funcionando (sin cambios en el lado de Gmail, ya que te preocupaba). El siguiente código funciona igual que las muestras a las que se refirió:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("[email protected]", "mypwd"),
                EnableSsl = true
            };
            client.Send("[email protected]", "[email protected]", "test", "testbody");
            Console.WriteLine("Sent");
            Console.ReadLine();
        }
    }
}

También lo hice funcionar usando una combinación de web.config, http://msdn.microsoft.com/en-us/library/w355a94k.aspx y código (porque no hay coincidencia EnableSslen el archivo de configuración :().

eglasius
fuente
1
Trabajó de manera brillante para mí en una aplicación C # winforms. Gracias Freddy
Andrew
13
Solo recuerde que un código como este está transmitiendo efectivamente sus credenciales de Gmail en texto plano al usuario ...
Chris Marisic
3
En realidad no es un ajuste para EnableSSL en el web.config correspondiente, véase la respuesta de abajo
Wiebe Tijsma
44
@Zidad que se agregó en 4.0.
eglasius
21
Es posible que también deba habilitar el acceso para "aplicaciones menos seguras" en la página de configuración de gmail: google.com/settings/security/lesssecureapps . Esto es necesario si obtiene la excepción "` La respuesta del servidor fue: 5.5.1 Se requiere autenticación.
Ravendarksky
73

Lo siguiente es casi seguro que sea la respuesta A SU PREGUNTA SI todo ha fallado :

Obtuve exactamente el mismo error, resulta que el nuevo algoritmo de medición de la fuerza de la contraseña de Google ha cambiado considerando que mi contraseña actual es demasiado débil y no me dice nada al respecto (ni siquiera un mensaje o advertencia) ... ¿Cómo descubrí esto? ? Bueno, decidí cambiar mi contraseña para ver si me ayudaría (intenté todo lo demás en vano) y cuando cambié mi contraseña, ¡funcionó!

Luego, para un experimento, intenté cambiar mi contraseña a mi contraseña anterior para ver qué pasaría, y Gmail en realidad no me permitió hacer esto, citando la razón "lo siento, no podemos permitirle guardar este cambio como haya elegido la contraseña es demasiado débil "y no me permitió volver a mi contraseña anterior. De esto deduje que se estaba produciendo un error porque a) necesita cambiar su contraseña una vez cada x cantidad de meses ob). como dije antes, sus algoritmos de seguridad de contraseña cambiaron y, por lo tanto, la contraseña débil que tenía no fue aceptada, ¡aunque no dijeron nada al respecto cuando intentaban iniciar sesión en CUALQUIER LUGAR! Este (número 2) es el escenario más probable, ya que mi contraseña débil tenía aproximadamente 4 meses y me permitió usarla en Gmail.

Es bastante malo que no hayan dicho nada al respecto, pero tiene sentido. Debido a que la mayoría de los correos electrónicos secuestrados se inician sesión usando software fuera de gmail, y supongo que se requiere que tenga una contraseña más segura si desea usar Gmail fuera del entorno de Gmail.

¡Espero que esto ayude!

Erx_VB.NExT.Coder
fuente
2
Gracias, como dices, cambia la contraseña para que sea segura y todo funcione bien.
Gavin
1
Este era exactamente mi problema: todas las demás sugerencias eran sobre configuración, pero mi configuración era correcta desde el principio, pero seguí recibiendo el error. Cambiar la contraseña marcó la diferencia,
André Vermeulen
Gracias, finalmente pude resolver este problema, mi caso en realidad fue aún más complicado, pude enviar correos electrónicos desde mi máquina de desarrollo (que está en Georgia, el Cáucaso), pero los correos electrónicos fallaban desde los servidores de producción (Reino Unido) Después cambiando la contraseña a una compleja todo funciona ahora :)
Kirill Chilingarashvili
Gracias. Tuve el mismo problema con mi cuenta de gmail que no tenía una contraseña segura. Lo actualicé con uno fuerte y mis códigos están funcionando.
Thomas.Benz
Gracias, sí, finalmente es solo cambiar la contraseña a una segura.
Misha Beskin
67

Además de los otros pasos de solución de problemas anteriores, también me gustaría agregar que si ha habilitado la autenticación de dos factores (también conocida como verificación de dos pasos ) en su cuenta de GMail, debe generar una contraseña específica de la aplicación y usarla nuevamente contraseña generada para autenticar a través de SMTP .

Para crear uno, visite: https://www.google.com/settings/ y elija Autorizar aplicaciones y sitios para generar la contraseña.

John Rasch
fuente
1
No tenía habilitada la verificación en dos pasos, y no importaba cuán segura fuera la contraseña, esta era la única forma en que podía solucionar mi problema. Pude usar otras cuentas de Gmail sin contraseñas de 2 pasos y más débiles sin problemas ... para usar la cuenta que realmente quería usar, tuve que habilitar 2 pasos y usar una contraseña específica de la aplicación.
Ian Robertson
Exactamente lo que estoy haciendo, pero sigue siendo el mismo error: - / ¡¡Está actuando como si mi contraseña no fuera lo suficientemente segura, pero estoy usando la contraseña de la aplicación que me dio Gmail !!!
Jerry Dodge
54
Turn On Access For Less Secure Apps and it will work for all no need to change password.

Enlace a la configuración de Gmail

ingrese la descripción de la imagen aquí

Suhail Mumtaz Awan
fuente
1
Esto funcionó para mí. Aún más, cuando traté de enviar un correo electrónico de la manera anterior, en realidad recibí un correo electrónico de Google donde dicen explícitamente que bloquearon este intento desde una aplicación menos segura y mencionaron esta forma de solucionarlo
Demarsch
1
Esta es la clave más importante en el rompecabezas ya que tenía configurada cualquier otra configuración y parecía no funcionar. Tan pronto como tuve esta configuración, funcionó a las mil maravillas.
Perdido el
1
Esto funcionó para mí. App Password + SSL + NetworkCredentials. (VB.NET)
CrazyIvan1974
30

También tuve algunos problemas para enviar correos electrónicos desde mi cuenta de gmail, debido a varias de las situaciones mencionadas anteriormente. Aquí hay un resumen de cómo lo hice funcionar y mantenerlo flexible al mismo tiempo:

  • En primer lugar, configure su cuenta de GMail:
    • Habilite IMAP y confirme el número máximo correcto de mensajes (puede hacerlo aquí)
    • Asegúrese de que su contraseña tenga al menos 7 caracteres y sea segura (según Google)
    • Asegúrese de no tener que ingresar un código captcha primero. Puede hacerlo enviando un correo electrónico de prueba desde su navegador.
  • Realice cambios en web.config (o app.config, aún no lo he intentado pero supongo que es igual de fácil hacer que funcione en una aplicación de Windows):
<configuration>
    <appSettings>
        <add key="EnableSSLOnMail" value="True"/>   
    </appSettings>

    <!-- other settings --> 

    ...

    <!-- system.net settings -->
    <system.net>
        <mailSettings>
            <smtp from="[email protected]" deliveryMethod="Network">
                <network 
                    defaultCredentials="false" 
                    host="smtp.gmail.com" 
                    port="587" 
                    password="stR0ngPassW0rd" 
                    userName="[email protected]"
                    />
                <!-- When using .Net 4.0 (or later) add attribute: enableSsl="true" and you're all set-->
            </smtp>
        </mailSettings>
    </system.net>
</configuration>
Add a Class to your project:

Imports System.Net.Mail

Public Class SSLMail

    Public Shared Sub SendMail(ByVal e As System.Web.UI.WebControls.MailMessageEventArgs)

        GetSmtpClient.Send(e.Message)

        'Since the message is sent here, set cancel=true so the original SmtpClient will not try to send the message too:
        e.Cancel = True

    End Sub

    Public Shared Sub SendMail(ByVal Msg As MailMessage)
        GetSmtpClient.Send(Msg)
    End Sub

    Public Shared Function GetSmtpClient() As SmtpClient

        Dim smtp As New Net.Mail.SmtpClient
        'Read EnableSSL setting from web.config
        smtp.EnableSsl = CBool(ConfigurationManager.AppSettings("EnableSSLOnMail"))
        Return smtp
    End Function

End Class

Y ahora, cuando quiera enviar correos electrónicos, todo lo que necesita hacer es llamar SSLMail.SendMail:

por ejemplo, en una página con un control PasswordRecovery:

Partial Class RecoverPassword
Inherits System.Web.UI.Page

Protected Sub RecoverPwd_SendingMail(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MailMessageEventArgs) Handles RecoverPwd.SendingMail
    e.Message.Bcc.Add("[email protected]")
    SSLMail.SendMail(e)
End Sub

End Class

O en cualquier parte de su código puede llamar:

SSLMail.SendMail(New system.Net.Mail.MailMessage("[email protected]","[email protected]", "Subject", "Body"})

¡Espero que esto ayude a cualquiera que se encuentre con esta publicación! (Utilicé VB.NET pero creo que es trivial convertirlo a cualquier lenguaje .NET).

Sebas
fuente
+1 "enableSsl =" true ": esto funciona para una aplicación heredada que no establece específicamente la propiedad Smtp.enableSsl sin volver a compilar los ensamblados. ¡Excelente consejo!
Metro Smurf
y no olvides el firewall. El puerto 587 no es un puerto habitual para abrir.
Guy Lowe
13
Dim SMTPClientObj As New Net.Mail.SmtpClient
SMTPClientObj.UseDefaultCredentials = False
SMTPClientObj.Credentials = New System.Net.NetworkCredential("[email protected]", "mypwd")
SMTPClientObj.Host = "smtp.gmail.com"
SMTPClientObj.Port = 587
SMTPClientObj.EnableSsl = True
SMTPClientObj.Send("[email protected]","[email protected]","test","testbody")

Si recibe un error como "El servidor SMTP requiere una conexión segura o el cliente no se autenticó. La respuesta del servidor fue: 5.5.1 Se requiere autenticación. Obtenga más información en" como obtengo antes de esto, asegúrese de que la línea esté SMTPClientObj.UseDefaultCredentials = Falseincluida y esta línea debería antes de la SMTPClientObj.Credentials.

Intenté cambiar estas 2 líneas de la manera opuesta y el error de autenticación requerida 5.5.1 regresó.

Terry Chng
fuente
Esto es exactamente lo que me pasó. ¡Quién pensó que el orden de establecer la propiedad arreglaría / rompería las cosas!
Bill Yang
Este fue el problema para mí también, cambié el orden según lo sugerido y funciona bien: dolores de cabeza, ¡uf!
eth0
13

Oh ... es increíble ... Primero, no pude enviar un correo electrónico por ningún motivo. Pero después de cambiar la secuencia de estas dos líneas como se muestra a continuación, funciona perfectamente.

//(1)
client.UseDefaultCredentials = true;
//(2)
client.Credentials = new System.Net.NetworkCredential("[email protected]", "password");

¡¡¡Espero que esto ayude!!! :)

Wirol
fuente
1
Sí, el orden hace la diferencia. Especialmente cuando configura las credenciales de propiedad y no desea utilizar las credenciales predeterminadas.
Stefan Cvetanovski
1
De acuerdo con la documentación, para usar Credenciales necesita establecer UseDefaultCredentials = false. Sin embargo, estas dos configuraciones parecen estar secretamente entrelazadas. Si establece UseDefaultCredentials en verdadero o falso, tendrá el efecto secundario de establecer Credentials en nulo. Y parece que la configuración de credenciales puede afectar el uso de UseDefaultCredentials = false. Sin embargo, no está documentado que hacer esto podría ser un error o simplemente un desarrollador poco convincente.
Aaron
10

El problema no es la capacidad técnica para enviar a través de gmail. Eso funciona para la mayoría de las situaciones. Si no puede enviar una máquina, generalmente se debe a que la máquina no se ha autenticado con un humano en los controles al menos una vez.

El problema que enfrentan la mayoría de los usuarios es que Google decide cambiar los límites de salida todo el tiempo. Siempre debe agregar código defensivo a su solución. Si comienza a ver errores, baje la velocidad de envío y simplemente deje de enviar por un tiempo. Si sigue intentando enviar Google, a veces agregará más tiempo a su período de demora antes de que pueda volver a enviar.

Lo que he hecho en mi sistema actual es enviar con un retraso de 1.5 segundos entre cada mensaje. Luego, si recibo algún error, pare durante 5 minutos y luego comience nuevamente. Esto generalmente funciona y le permitirá enviar hasta los límites de la cuenta (la última vez que lo verifiqué fue de 2,000 para los principales inicios de sesión de los clientes por día).

Jason Short
fuente
1
Este fue exactamente mi problema! Cuando lo implementé en Producción, obtuve el problema y después de iniciar sesión en Gmail en el servidor, comenzó a funcionar nuevamente.
ThisGuy
9

Tuve el mismo problema, pero resultó que mi protección antivirus estaba bloqueando el correo electrónico saliente "spam". Desactivar esto me permitió usar el puerto 587 para enviar correos electrónicos SMTP a través de GMail

usuario464329
fuente
Deshabilité Windows Defender y también comenzó a funcionar.
MorioBoncz
9

Si nada más ha funcionado aquí para usted, es posible que deba permitir el acceso a su cuenta de gmail desde aplicaciones de terceros. Este fue mi problema. Para permitir el acceso, haga lo siguiente:

  1. Inicie sesión en su cuenta de gmail.
  2. Visita esta página https://accounts.google.com/DisplayUnlockCaptcha y haga clic en el botón para permitir el acceso.
  3. Visite esta página https://www.google.com/settings/security/lesssecureapps y habilite el acceso para aplicaciones menos seguras.

¡Esto funcionó para mí, espero que funcione para alguien más!

celta
fuente
8

No estoy seguro de qué versión de .NET se requiere para esto porque eglasius mencionó que no hay una enableSslconfiguración coincidente (estoy usando .NET 4.0, pero sospecho que funciona en .NET 2.0 o posterior), pero esta configuración funcionó para yo (y no requiere que uses ninguna configuración programática):

<system.net>
  <mailSettings>
    <smtp from="[email protected]" deliveryMethod="Network">
      <network defaultCredentials="false" enableSsl="true" host="smtp.gmail.com" port="587" password="password" userName="[email protected]"/>
    </smtp>
  </mailSettings>
</system.net>

Es posible que primero deba habilitar POP o IMAP en su cuenta de Gmail: https://mail.google.com/mail/?shva=1#settings/fwdandpop

Recomiendo probarlo primero con un cliente de correo normal ...

Wiebe Tijsma
fuente
2
eso es nuevo para 4.0, compare versiones en -> msdn.microsoft.com/en-us/library/ms164242(v=VS.90).aspx
eglasius
Hola Eglasius ... OK, gracias por eso! Es extraño que solo tengan el enfoque programático en la versión anterior a la 4.0. Supongo que todos olvidamos cosas de vez en cuando :)
Wiebe Tijsma
6

@Andres Pompiglio: Sí, es correcto, debe cambiar su contraseña al menos una vez ... este código funciona bien:

//Satrt Send Email Function
public string SendMail(string toList, string from, string ccList,
    string subject, string body)
{

    MailMessage message = new MailMessage();
    SmtpClient smtpClient = new SmtpClient();
    string msg = string.Empty;
    try
    {
        MailAddress fromAddress = new MailAddress(from);
        message.From = fromAddress;
        message.To.Add(toList);
        if (ccList != null && ccList != string.Empty)
            message.CC.Add(ccList);
        message.Subject = subject;
        message.IsBodyHtml = true;
        message.Body = body;
        // We use gmail as our smtp client
        smtpClient.Host = "smtp.gmail.com";   
        smtpClient.Port = 587;
        smtpClient.EnableSsl = true;
        smtpClient.UseDefaultCredentials = true;
        smtpClient.Credentials = new System.Net.NetworkCredential(
            "Your Gmail User Name", "Your Gmail Password");

        smtpClient.Send(message);
        msg = "Successful<BR>";
    }
    catch (Exception ex)
    {
        msg = ex.Message;
    }
    return msg;
}
//End Send Email Function

Y puede hacer una llamada a la función usando:

Response.Write(SendMail(recipient Address, "[email protected]", "ccList if any", "subject", "body"))
maxcoder
fuente
El servidor SMTP requiere una conexión segura o el cliente no se autenticó. La respuesta del servidor fue: 5.5.1 Se requiere autenticación. Obtenga más información en
Savas Adar
6

Estaba usando una conexión VPN corporativa. Fue la razón por la que no pude enviar correos electrónicos desde mi aplicación. Funciona si me desconecto de VPN.

Ned
fuente
5

También descubrí que Google desactivó la cuenta que utilicé para iniciar sesión por algún motivo. Una vez que restablecí mi contraseña (a la misma que solía ser), pude enviar correos electrónicos muy bien. También recibí el mensaje 5.5.1.

RKL
fuente
5

También había intentado muchas soluciones, pero hacer algunos cambios funcionará

host = smtp.gmail.com
port = 587
username = email@gmail.com
password = password
enabledssl = true

con smtpclient los parámetros anteriores son trabajo en gmail

Suresh
fuente
5

Recibía el mismo error y ninguna de las soluciones anteriores me ayudó.

Mi problema era que estaba ejecutando el código desde un servidor remoto, que nunca se había utilizado para iniciar sesión en la cuenta de Gmail.

Abrí un navegador en el servidor remoto e inicié sesión en gmail desde allí. Hizo una pregunta de seguridad para verificar que era yo, ya que esta era una nueva ubicación. Después de hacer la verificación de seguridad, pude autenticarme a través del código.

Vlad Tamas
fuente
4

Me encontré con este mismo error ( "El servidor SMTP requiere una conexión segura o el cliente no se autenticó. La respuesta del servidor fue: 5.5.1 Se requiere autenticación. Obtenga más información en" ) y descubrí que estaba usando la contraseña incorrecta. Arreglé las credenciales de inicio de sesión y se envió correctamente.

Sé que es tarde, pero tal vez esto ayude a alguien más.

Albert Bori
fuente
4

Otra cosa que he encontrado es que debes cambiar tu contraseña al menos una vez. E intente usar una contraseña de nivel seguro (no use el mismo usuario que la contraseña, 123456, etc.)

Peter Mortensen
fuente
4

Otra posible solución para ti. Estaba teniendo problemas similares al conectarme a gmail a través de IMAP. Después de probar todas las soluciones que encontré, leerá aquí y en otros lugares sobre SO (por ejemplo, habilite IMAP, habilite el acceso menos seguro a su correo, usando https://accounts.google.com/b/0/displayunlockcaptcha y etc.), en realidad configuré una nueva cuenta de gmail una vez más.

En mi prueba original, la primera cuenta de Gmail que había creado, me había conectado a mi cuenta principal de Gmail. Esto dio como resultado un comportamiento errático en el que Google hacía referencia a la cuenta incorrecta. Por ejemplo, ejecutando https://accounts.google.com/b/0/displayunlockcaptcha abrió mi cuenta principal en lugar de la que había creado para ese fin.

Entonces, cuando creé una nueva cuenta y no la conecté a mi cuenta principal, después de seguir todos los pasos apropiados como se indica arriba, ¡descubrí que funcionaba bien!

Todavía no he confirmado esto (es decir, reproducido), pero aparentemente lo hizo por mí ... espero que ayude.

sinewave440hz
fuente
4
  1. Primero verifique la configuración de su cuenta de gmail y actívela desde "Acceso para aplicaciones menos seguras" ingrese la descripción de la imagen aquí

Le recomendamos encarecidamente que utilice una aplicación segura, como Gmail, para acceder a su cuenta. Todas las aplicaciones creadas por Google cumplen con estos estándares de seguridad. Usar una aplicación menos segura, por otro lado, podría dejar su cuenta vulnerable. Aprende más.

  1. Conjunto

    smtp.UseDefaultCredentials = false;

    antes de

    smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
reza.cse08
fuente
4

Hay una o más razones para estos errores.

  • Inicie sesión con su Gmail (o cualquier otro si) en su sistema local.

  • Compruebe también si hay una aplicación menos segura y configúrela como "Activar". Aquí encontrará el enlace para GMAIL. https://www.google.com/settings/security/lesssecureapps

  • verifique EnableSsl en su código de correo electrónico y también configúrelo como verdadero.

    smtp.EnableSsl = true;
  • Compruebe también qué puerto está utilizando actualmente. 25 es Global, pero también puede verificarlo para otros como 587. marque aquí. ¿Todas las comunicaciones SMTP suceden más de 25?

  • SI ESTÁS A DISTANCIA : Comprueba la respuesta de Vlad Tamas arriba.

Bharat
fuente
¿Qué sucede si no quiero activar la configuración de aplicaciones menos seguras? ¿Cómo hacen esto otros clientes de correo electrónico? ¿Por qué no puedo hacer lo mismo con C #?
user734028
3

También puede conectarse a través del puerto 465, pero debido a algunas limitaciones del espacio de nombres System.Net.Mail, es posible que deba modificar su código. Esto se debe a que el espacio de nombres no ofrece la capacidad de realizar conexiones SSL implícitas. Esto se analiza en http://blogs.msdn.com/b/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx , y yo Hemos proporcionado un ejemplo de cómo usar el CDO (objeto de datos de colaboración) en otra discusión ( GMail SMTP a través de errores de C # .Net en todos los puertos ).

Bryan Allred
fuente
3

Tuve este problema resuelto. Aparentemente ese mensaje se usa en múltiples tipos de error. Mi problema fue que había alcanzado mi máximo de 500 correos enviados.

inicie sesión en la cuenta e intente enviar un correo manualmente. Si se alcanza el límite, le informará

Ayson Baxter
fuente
2
smtp.Host = "smtp.gmail.com"; //host name
smtp.Port = 587; //port number
smtp.EnableSsl = true; //whether your smtp server requires SSL
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
smtp.Timeout = 20000;
somesh
fuente
1

Cambie su contraseña de gmail e intente nuevamente, debería funcionar después de eso.

No sé por qué, pero cada vez que cambia su alojamiento tiene que cambiar su contraseña.

Jo Smo
fuente