Envoi d'e-mails via le serveur SMTP Gmail avec C #


243

Pour une raison quelconque, ni la réponse acceptée ni aucune autre ne fonctionne pour moi pour " Envoi d'e-mails dans .NET via Gmail ". Pourquoi ne fonctionneraient-ils pas?

MISE À JOUR: J'ai essayé toutes les réponses (acceptées et autres) dans l'autre question, mais aucune ne fonctionne.

Je voudrais juste savoir si cela fonctionne pour quelqu'un d'autre, sinon Google peut avoir changé quelque chose (ce qui s'est déjà produit).

Lorsque j'essaie le morceau de code qui utilise SmtpDeliveryMethod.Network, je reçois rapidement une SmtpException sur Send (message). Le message est

Le serveur SMTP nécessite une connexion sécurisée ou le client n'a pas été authentifié.

La réponse du serveur a été:

5.5.1 Authentification requise. En savoir plus sur «<- sérieusement, ça s'arrête là

METTRE À JOUR:

C'est une question que j'ai posée il y a longtemps, et la réponse acceptée est le code que j'ai utilisé de très nombreuses fois sur différents projets.

J'ai pris certaines des idées de cet article et d'autres projets EmailSender pour créer un projet EmailSender chez Codeplex . Il est conçu pour la testabilité et prend en charge mes services SMTP préférés tels que GoDaddy et Gmail.


J'ai essayé de le faire en utilisant des méthodes similaires dans une langue différente. Rencontré le même type de chose: les anciennes méthodes documentées qui fonctionnaient auparavant, ne fonctionnaient pas pour moi. Vous vous demandez donc si Google a changé quelque chose ou si vous avez fait quelque chose de mal.
AaronLS

3
@aaronls le seul changement récent semble être lié au port 465. Je l'ai essayé tout en recherchant une solution (je travaillais juste sur la même), et les 465 ports expirent tout le temps. Si c'est votre cas, essayez avec le port 587.
eglasius

2
Ce problème est dû à la "vérification des mots" (captcha). Si vous vous connectez via l'interface Web à la main et remplissez captcha, votre SMTP commencera à fonctionner.
Robert Koritnik

4
FWIW, travaille pour moi. vous devez utiliser 587 et .EnableSSL true. c # 4 / .NET 4 ne prend actuellement pas en charge l'alternative 465 / SSL. demandes gmail pour la configuration d'autres clients de messagerie .
gerryLowry

1
Suivez la réponse @eglasius et assurez-vous d'activer le paramètre «Autoriser les applications moins sécurisées» dans Gmail pour permettre à gmail d'authentifier votre compte.
user2713706

Réponses:


291

CVertex, assurez-vous de revoir votre code et, si cela ne révèle rien, de le publier. J'activais cela sur un site de test ASP.NET sur lequel je travaillais, et cela fonctionne.

En fait, à un moment donné, j'ai eu un problème avec mon code. Je ne l'ai pas repéré avant d'avoir une version plus simple sur un programme de console et de voir que cela fonctionnait (pas de changement du côté de Gmail car vous étiez inquiet). Le code ci-dessous fonctionne exactement comme les exemples auxquels vous avez fait référence:

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("myusername@gmail.com", "mypwd"),
                EnableSsl = true
            };
            client.Send("myusername@gmail.com", "myusername@gmail.com", "test", "testbody");
            Console.WriteLine("Sent");
            Console.ReadLine();
        }
    }
}

Je l'ai également fait fonctionner en utilisant une combinaison de web.config, http://msdn.microsoft.com/en-us/library/w355a94k.aspx et du code (car il n'y a pas de correspondance EnableSsldans le fichier de configuration :().


1
A travaillé avec brio pour moi dans une application Winforms C #. Merci, Freddy.
Andrew

13
N'oubliez pas qu'un code comme celui-ci transmet efficacement vos informations d'identification Gmail en texte brut à l'utilisateur ...
Chris Marisic

3
il y a en fait un paramètre correspondant pour enableSsl dans le web.config, voir la réponse ci
Wiebe Tijsma

4
@Zidad qui a été ajouté dans 4.0.
eglasius

21
Vous devrez peut-être également activer l'accès aux "applications moins sécurisées" dans votre page de paramètres Gmail: google.com/settings/security/lesssecureapps . Ceci est nécessaire si vous obtenez l'exception "` La réponse du serveur était: 5.5.1 Authentification requise.
Ravendarksky

74

CE QUI SUIT SERA PRESQUE CERTAINEMENT LA RÉPONSE À VOTRE QUESTION SI TOUT LE MONDE A ÉCHOUÉ :

J'ai exactement la même erreur, il s'avère que le nouvel algorithme de mesure de la force des mots de passe de Google a changé, jugeant mon mot de passe actuel trop faible et ne m'en disant rien (pas même un message ou un avertissement) ... Comment ai-je découvert cela ? Eh bien, j'ai choisi de changer mon mot de passe pour voir si cela aiderait (j'ai essayé tout le reste en vain) et quand j'ai changé mon mot de passe, cela a fonctionné!

Ensuite, pour une expérience, j'ai essayé de changer mon mot de passe pour revenir à mon ancien mot de passe pour voir ce qui se passerait, et Gmail ne m'a pas vraiment autorisé à le faire, citant la raison "désolé, nous ne pouvons pas vous permettre d'enregistrer ce changement comme votre choix le mot de passe est trop faible "et ne me laisse pas revenir à mon ancien mot de passe. J'en ai déduit que c'était une erreur car soit a) vous devez changer votre mot de passe une fois tous les x mois ou b). comme je l'ai déjà dit, leurs algorithmes de force de mot de passe ont changé et donc le mot de passe faible que j'avais n'avait pas été accepté, même s'ils n'ont rien dit à ce sujet en essayant de se connecter N'IMPORTE O!! Ceci (numéro 2) est le scénario le plus probable, car mon mot de passe faible était âgé d'environ 4 mois et il m'a permis de l'utiliser dans Gmail.

C'est assez mauvais qu'ils n'aient rien dit à ce sujet, mais c'est logique. Parce que la plupart des e-mails piratés sont connectés à l'aide d'un logiciel en dehors de gmail, et je suppose que vous devez avoir un mot de passe plus fort si vous souhaitez utiliser Gmail en dehors de l'environnement Gmail.

J'espère que ça aide!


2
Merci, comme vous le dites, changez le mot de passe pour qu'il soit fort et que tout fonctionne bien.
Gavin

1
C'était exactement mon problème - toutes les autres suggestions concernaient la configuration, mais ma configuration était correcte depuis le début, mais j'ai continué à obtenir l'erreur. Changer le mot de passe a fait toute la différence,
André Vermeulen

Merci, enfin j'ai pu régler ce problème, mon cas était en fait encore plus compliqué, j'ai pu envoyer des e-mails depuis ma machine de développement (qui est en Géorgie, dans le Caucase), mais les e-mails échouaient des serveurs de production (Royaume-Uni) Après changer le mot de passe en complexe, tout fonctionne maintenant :)
Kirill Chilingarashvili

Merci. J'ai eu le même problème avec mon compte gmail qui ne possédait pas de mot de passe. Je l'ai mis à jour avec un fort et mes codes fonctionnent.
Thomas.Benz

Merci, enfin, il suffit de changer le mot de passe en un mot de passe fort.
Misha Beskin

68

En plus des autres étapes de dépannage ci-dessus, je voudrais également ajouter que si vous avez activé l'authentification à deux facteurs (également appelée vérification en deux étapes ) sur votre compte GMail, vous devez générer un mot de passe spécifique à l'application et utiliser ce nouveau mot de passe généré pour s'authentifier via SMTP .

Pour en créer un, rendez-vous sur: https://www.google.com/settings/ et choisissez Autoriser les applications et les sites à générer le mot de passe.


1
Je n'avais pas activé la vérification en 2 étapes, et peu importait la sécurité du mot de passe, c'était la seule façon de résoudre mon problème. J'ai pu utiliser d'autres comptes Gmail sans mot de passe en 2 étapes et plus faibles sans aucun problème ... pour utiliser le compte que je voulais vraiment utiliser, j'ai dû activer 2 étapes et utiliser un mot de passe spécifique à l'application.
Ian Robertson

Exactement ce que je fais, mais toujours la même erreur: - / C'est comme si mon mot de passe n'était pas assez fort, mais j'utilise le mot de passe de l'application que Gmail m'a donné !!!
Jerry Dodge

55
Turn On Access For Less Secure Apps and it will work for all no need to change password.

Lien vers les paramètres Gmail

entrez la description de l'image ici


1
Cela a fonctionné pour moi. De plus, lorsque j'ai essayé d'envoyer un e-mail de la manière ci-dessus, j'ai reçu en fait un e-mail de Google où ils disent explicitement qu'ils ont bloqué cette tentative à partir d'une application moins sécurisée et ils ont mentionné cette façon de la résoudre
Demarsch

1
C'est la clé la plus importante du puzzle, car j'avais tous les autres paramètres configurés et cela ne semblait pas fonctionner. Dès que j'ai eu ce réglage, cela a juste fonctionné comme un charme.
Perdu

1
Cela a fonctionné pour moi. Mot de passe de l'application + SSL + NetworkCredentials. (VB.NET)
CrazyIvan1974

30

J'ai également eu des problèmes pour envoyer des e-mails à partir de mon compte Gmail, qui étaient dus à plusieurs des situations susmentionnées. Voici un résumé de la façon dont je l'ai fait fonctionner, et en le gardant flexible en même temps:

  • Tout d'abord, configurez votre compte GMail:
    • Activez IMAP et affirmez le bon nombre maximum de messages (vous pouvez le faire ici)
    • Assurez-vous que votre mot de passe est d'au moins 7 caractères et qu'il est fort (selon Google)
    • Assurez-vous que vous n'êtes pas obligé de saisir d'abord un code captcha. Vous pouvez le faire en envoyant un e-mail de test à partir de votre navigateur.
  • Apportez des modifications dans web.config (ou app.config, je n'ai pas encore essayé mais je suppose qu'il est tout aussi facile de le faire fonctionner dans une application Windows):
<configuration>
    <appSettings>
        <add key="EnableSSLOnMail" value="True"/>   
    </appSettings>

    <!-- other settings --> 

    ...

    <!-- system.net settings -->
    <system.net>
        <mailSettings>
            <smtp from="yourusername@gmail.com" deliveryMethod="Network">
                <network 
                    defaultCredentials="false" 
                    host="smtp.gmail.com" 
                    port="587" 
                    password="stR0ngPassW0rd" 
                    userName="yourusername@gmail.com"
                    />
                <!-- 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

Et maintenant, chaque fois que vous souhaitez envoyer des e-mails, il vous suffit d'appeler SSLMail.SendMail:

par exemple dans une page avec un contrôle 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("webmaster@example.com")
    SSLMail.SendMail(e)
End Sub

End Class

Ou n'importe où dans votre code, vous pouvez appeler:

SSLMail.SendMail(New system.Net.Mail.MailMessage("from@from.com","to@to.com", "Subject", "Body"})

J'espère que cela aide toute personne qui rencontre ce message! (J'ai utilisé VB.NET mais je pense qu'il est trivial de le convertir dans n'importe quel langage .NET.)


+1 "enableSsl =" true "- cela fonctionne pour une application héritée qui ne définit pas spécifiquement la propriété Smtp.enableSsl sans recompiler les assemblages. Excellent conseil!
Metro Smurf

et n'oubliez pas le pare-feu. Le port 587 n'est pas un port habituel à ouvrir.
Guy Lowe

13
Dim SMTPClientObj As New Net.Mail.SmtpClient
SMTPClientObj.UseDefaultCredentials = False
SMTPClientObj.Credentials = New System.Net.NetworkCredential("myusername@gmail.com", "mypwd")
SMTPClientObj.Host = "smtp.gmail.com"
SMTPClientObj.Port = 587
SMTPClientObj.EnableSsl = True
SMTPClientObj.Send("myusername@gmail.com","yourusername@gmail.com","test","testbody")

Si vous obtenez une erreur du type "Le serveur SMTP nécessite une connexion sécurisée ou le client n'a pas été authentifié. La réponse du serveur était: 5.5.1 Authentification requise. En savoir plus sur" comme je le sais avant, assurez-vous que la ligne SMTPClientObj.UseDefaultCredentials = Falseincluse et cette ligne devrait avant le SMTPClientObj.Credentials.

J'ai essayé de changer ces 2 lignes dans le sens inverse et l' erreur 5.5.1 Authentication Required est revenue.


C'est exactement ce qui m'est arrivé. Qui pensait que l'ordre de définition des propriétés réparerait / casserait les choses!
Bill Yang

C'était aussi le problème pour moi, j'ai changé l'ordre comme suggéré et cela fonctionne bien - maux de tête, ugh!
eth0

13

Oh ... C'est incroyable ... D'abord, je n'ai pas pu envoyer d'e-mail pour une raison quelconque. Mais après avoir changé la séquence de ces deux lignes comme ci-dessous, cela fonctionne parfaitement.

//(1)
client.UseDefaultCredentials = true;
//(2)
client.Credentials = new System.Net.NetworkCredential("username@gmail.com", "password");

J'espère que cette aide !!! :)


1
Oui, la commande fait la différence. Surtout lorsque vous définissez la propriété Credentials et que vous ne souhaitez pas utiliser les informations d'identification par défaut.
Stefan Cvetanovski

1
Selon la documentation, pour utiliser les informations d'identification, vous devez définir UseDefaultCredentials = false. Cependant, ces deux paramètres semblent être secrètement liés. Si vous définissez UseDefaultCredentials sur true ou false, cela aura pour effet secondaire de définir Credentials sur null. Et il semble que la définition des informations d'identification puisse avoir un effet secondaire sur UseDefaultCredentials = false. Non documenté comme faisant cela cependant, pourrait être un bug ou juste un développeur boiteux.
Aaron

10

Le problème n'est pas lié à la capacité technique d'envoyer via gmail. Cela fonctionne pour la plupart des situations. Si vous ne pouvez pas envoyer une machine à envoyer, cela est généralement dû au fait que la machine n'a pas été authentifiée avec un humain aux commandes au moins une fois.

Le problème auquel la plupart des utilisateurs sont confrontés est que Google décide de modifier les limites sortantes tout le temps. Vous devez toujours ajouter du code défensif à votre solution. Si vous commencez à voir des erreurs, réduisez votre vitesse d'envoi et arrêtez simplement d'envoyer pendant un certain temps. Si vous continuez d'essayer d'envoyer Google, vous ajouterez parfois du temps supplémentaire à votre délai avant de pouvoir envoyer à nouveau.

Ce que j'ai fait dans mon système actuel, c'est d'envoyer avec un délai de 1,5 seconde entre chaque message. Ensuite, si j'obtiens des erreurs, arrêtez-vous pendant 5 minutes, puis recommencez. Cela fonctionne généralement et vous permettra d'envoyer jusqu'à la limite du compte (la dernière fois que j'ai vérifié qu'il s'agissait de 2 000 pour les connexions client premium par jour).


1
C'était exactement mon problème! Lorsque j'ai été déployé en production, j'ai eu le problème et après avoir ouvert une session sur Gmail sur le serveur lui-même, il a recommencé à fonctionner.
ThisGuy


9

J'ai eu le même problème, mais il s'est avéré que ma protection antivirus bloquait les e-mails "spam" sortants. Cette désactivation m'a permis d'utiliser le port 587 pour envoyer des e-mails SMTP via GMail


J'ai désactivé Windows Defender et il a également commencé à fonctionner.
MorioBoncz

9

Si rien d'autre n'a fonctionné ici pour vous, vous devrez peut-être autoriser l'accès à votre compte Gmail à partir d'applications tierces. C'était mon problème. Pour autoriser l'accès, procédez comme suit:

  1. Connectez-vous à votre compte gmail.
  2. Visitez cette page https://accounts.google.com/DisplayUnlockCaptcha et cliquez sur le bouton pour autoriser l'accès.
  3. Visitez cette page https://www.google.com/settings/security/lesssecureapps et activez l'accès aux applications moins sécurisées.

Cela a fonctionné pour moi j'espère que cela fonctionne pour quelqu'un d'autre!


8

Je ne sais pas quelle version .NET est requise pour cela car eglasius a mentionné qu'il n'y a pas de enableSslparamètre correspondant (j'utilise .NET 4.0, mais je soupçonne que cela fonctionne dans .NET 2.0 ou version ultérieure), mais cette configuration a juste fonctionné pour moi (et ne vous oblige à utiliser aucune configuration programmatique):

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

Vous devrez peut-être d'abord activer POP ou IMAP sur votre compte Gmail: https://mail.google.com/mail/?shva=1#settings/fwdandpop

Je recommande de l'essayer avec un client de messagerie normal d'abord ...


2
qui est nouveau à 4.0, comparez les versions à -> msdn.microsoft.com/en-us/library/ms164242(v=VS.90).aspx
eglasius

Salut Eglasius ... OK merci pour ça! Étrange, ils n'ont que l'approche programmatique dans la version antérieure à 4.0. Je suppose que nous oublions tous des choses de temps en temps :)
Wiebe Tijsma

6

@Andres Pompiglio: Oui c'est vrai, vous devez changer votre mot de passe au moins une fois .. ce code fonctionne très 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

ET vous pouvez appeler la fonction en utilisant:

Response.Write(SendMail(recipient Address, "UserName@gmail.com", "ccList if any", "subject", "body"))

Le serveur SMTP nécessite une connexion sécurisée ou le client n'a pas été authentifié. La réponse du serveur était: 5.5.1 Authentification requise. En savoir plus sur
Savas Adar

6

J'utilisais une connexion VPN d'entreprise. C'est la raison pour laquelle je n'ai pas pu envoyer d'e-mail depuis ma candidature. Cela fonctionne si je me déconnecte du VPN.


5

J'ai également constaté que le compte que j'avais utilisé pour me connecter avait été désactivé par Google pour une raison quelconque. Une fois que j'ai réinitialisé mon mot de passe (le même qu'avant), j'ai pu envoyer des e-mails très bien. Je recevais également un message 5.5.1.


5

J'avais également essayé de nombreuses solutions, mais apportez quelques modifications, cela fonctionnera

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

avec smtpclient les paramètres ci-dessus fonctionnent dans gmail


5

J'obtenais la même erreur et aucune des solutions ci-dessus n'a aidé.

Mon problème était que j'exécutais le code à partir d'un serveur distant, qui n'avait jamais été utilisé pour se connecter au compte gmail.

J'ai ouvert un navigateur sur le serveur distant et je me suis connecté à gmail à partir de là. Il a posé une question de sécurité pour vérifier qu'il s'agissait bien de moi puisqu'il s'agissait d'un nouvel emplacement. Après avoir fait le contrôle de sécurité, j'ai pu m'authentifier via le code.



4

J'ai rencontré cette même erreur ( "Le serveur SMTP nécessite une connexion sécurisée ou le client n'a pas été authentifié. La réponse du serveur était: 5.5.1 Authentification requise. En savoir plus sur" ) et j'ai découvert que j'utilisais le mauvais mot de passe. J'ai corrigé les informations de connexion et il a été envoyé correctement.

Je sais que c'est tard, mais peut-être que cela aidera quelqu'un d'autre.


4

Une autre chose que j'ai trouvée est que vous devez changer votre mot de passe au moins une fois. Et essayez d'utiliser un mot de passe de niveau sécurisé (n'utilisez pas le même utilisateur que le mot de passe, 123456, etc.)


4

Encore une autre solution possible pour vous. J'avais des problèmes similaires de connexion à gmail via IMAP. Après avoir essayé toutes les solutions que j'ai rencontrées que vous lirez ici et ailleurs sur SO (par exemple, activez IMAP, activez un accès moins sécurisé à votre messagerie, en utilisant https://accounts.google.com/b/0/displayunlockcaptcha et ainsi de suite), j'ai en fait créé un nouveau compte Gmail.

Dans mon test d'origine, le premier compte gmail que j'avais créé, je m'étais connecté à mon compte gmail principal. Cela a entraîné un comportement erratique lorsque le mauvais compte était référencé par Google. Par exemple, exécuter https://accounts.google.com/b/0/displayunlockcaptcha ouvert mon compte principal plutôt que celui que j'avais créé à cet effet.

Donc, quand j'ai créé un nouveau compte et ne l'ai pas connecté à mon compte principal, après avoir suivi toutes les étapes appropriées comme ci-dessus, j'ai trouvé que cela fonctionnait bien!

Je ne l'ai pas encore confirmé (c'est-à-dire reproduit), mais il l'a apparemment fait pour moi ... j'espère que cela aide.


4
  1. Vérifiez d'abord les paramètres de votre compte Gmail et activez l'option "Accès aux applications moins sécurisées" entrez la description de l'image ici

Nous vous recommandons fortement d'utiliser une application sécurisée, comme Gmail, pour accéder à votre compte. Toutes les applications créées par Google répondent à ces normes de sécurité. En revanche, l'utilisation d'une application moins sécurisée pourrait rendre votre compte vulnérable. Apprendre encore plus.

  1. Ensemble

    smtp.UseDefaultCredentials = false;

    avant

    smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);

4

Une ou plusieurs raisons sont à l'origine de ces erreurs.

  • Connectez-vous avec votre Gmail (ou tout autre si) dans votre système local.

  • Vérifiez également l'application moins sécurisée et réglez-la sur «Activer». Voici le lien pour GMAIL. https://www.google.com/settings/security/lesssecureapps

  • vérifiez EnableSsl dans votre code e-mail et définissez-le également sur true.

    smtp.EnableSsl = true;
  • Vérifiez également le port que vous utilisez actuellement. 25 est Global, mais vous pouvez également le vérifier pour d'autres comme 587. vérifiez ici. Est-ce que toutes les communications SMTP ont lieu sur 25?

  • SI VOUS ÊTES À DISTANCE : Vérifiez la réponse de Vlad Tamas ci-dessus.


que faire si je ne veux pas activer les paramètres d'application moins sécurisés, comment les autres clients de messagerie font-ils pourquoi je ne peux pas faire de même avec c #?
user734028

3

Vous pouvez également vous connecter via le port 465, mais en raison de certaines limitations de l'espace de noms System.Net.Mail, vous devrez peut-être modifier votre code. En effet, l'espace de noms n'offre pas la possibilité d'établir des connexions SSL implicites. Ceci est discuté à http://blogs.msdn.com/b/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx , et je ont fourni un exemple de la façon d'utiliser le CDO (Collaborative Data Object) dans une autre discussion ( GMail SMTP via des erreurs C # .Net sur tous les ports ).


3

J'ai fait résoudre ce problème. Apparemment, ce message est utilisé dans plusieurs types d'erreur. Mon problème était que j'avais atteint mon maximum de 500 mails envoyés.

connectez-vous au compte et essayez d'envoyer un e-mail manuellement. Si la limite a été atteinte, il vous informera


2

Si vous avez activé la vérification en deux étapes sur votre compte Gmail, vous devrez générer un mot de passe d'application. https://support.google.com/accounts/answer/185833?p=app_passwords_sa&hl=en&visit_id=636903322072234863-1319515789&rd=1 Sélectionnez Comment générer une option de mot de passe d'application et suivez les étapes fournies. Copiez et collez le mot de passe d'application généré quelque part car vous ne pourrez pas le récupérer après avoir cliqué sur TERMINÉ.


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;

1

Modifiez votre mot de passe gmail et réessayez, cela devrait fonctionner après cela.

Je ne sais pas pourquoi, mais chaque fois que vous changez d'hébergement, vous devez changer votre mot de passe.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.