7
votes

Pourquoi j'utilise Google 'SMTP' ne peut pas envoyer de courrier électronique?

J'ai le programme suivant pour envoyer un e-mail à l'aide de "smtp.gmail.com:587"

namespace TestMailServer
{
    class Program
    {
        static void Main(string[] args)
        {
            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
            mail.From = new MailAddress("myTest@gmail.com");
            mail.To.Add("myTest2@gmail.com");
            mail.Subject = "Test Mail";
            mail.Body = "This is for testing SMTP mail";

            SmtpServer.Port = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential("myTest@gmail.com", "myPassword");
            SmtpServer.EnableSsl = true;
            SmtpServer.Send(mail);
            Console.WriteLine("Send out");

        }
    }
}

p>mytest@gmail.com, myTest2@gmail.com est vraiment existant et mytest Le mot de passe de gmail.com est MyPassword. Pourquoi j'ai eu l'erreur suivante: P>

Exception non gérée: System.net.mail.smtpException: le Le serveur SMTP nécessite un sécurisé la connexion ou le client n'était pas authentifié. La réponse du serveur était: 5.5.1 Authentification requise. En savoir plus à System.net.mail.mailcommand.checkreesponse (smtpstauscode Code de statut, réponse à la chaîne) à System.net.mail.mailcommand.send (smtpconnection Conn, byte [] commande, chaîne de)
à System.net.mail.smtpTransport.sendmail (mailaddress expéditeur, mailaddresscule Les destinataires, la livraison de chaînesNotify, SmtpfaileDrecipientException & exception) à System.net.mail.smtpClient.send (MailMessage message) à TestCeRailServer.Program.main (String [] args) dans D: \ Visual Studio 2010 \ Projects \ TestMarkailServer \ TestMearServer \ Program.cs: Ligne 26 Appuyez sur n'importe quelle touche pour continuer. . . p> blockQuote> p>


1 commentaires

Je recommanderais de jeter un coup d'oeil sur cette question


4 Réponses :


5
votes

Je ne suis pas sûr de ce qui cause votre problème. Voici un certain code que j'utilise pour envoyer avec succès un courrier électronique via un compte Gmail:

const string from = "...";
var fromAddr = new MailAddress(from, "Bug Tracker");
var toAddr = new MailAddress("...@...", "...");
var client = new SmtpClient {
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Timeout = 30 * 1000,
    Credentials = new NetworkCredential(fromAddr.Address, "...")
};
using (var msg = new MailMessage(fromAddr, toAddr)) {
    msg.Subject = "...";
    msg.Body = string.Format("username: {0}\nversion: {1}\n\n{2}", Environment.UserName, Assembly.GetExecutingAssembly().GetName().Version.ToString(3), cbtext);
    client.Send(msg);
}


6 commentaires

Est-ce que cela fonctionne toujours pour vous? C'est le code exact que j'avais utilisé dans le passé, mais avec la conversion récente de Google à la configuration "partagée" pour Google Apps Mail, cela semble avoir cessé de fonctionner, obtenant l'erreur que l'OP obtient.


@Chals Boyung: Cela a fonctionné à partir du 19 avril 2011. Le système m'envoie un email avec une trace de pile chaque fois qu'il y a une exception non gérée. C'est donc un événement rare. Je vais le tester à nouveau.


Je viens de le tester. Ça marche toujours. Peut-être que le problème est dans les paramètres Gmail.


Votre domaine Google Apps a-t-il déjà été converti? Se demandant si la conversion change quelque chose.


Je ne sais pas ce que vous entendez par "domaine Google Apps". Je n'utilise pas Google Apps, juste un compte Gmail.


Jésus .. Le délai d'attente a résolu mon problème ... Sainte Crap, pourquoi? Soudain, il s'est arrêté et maintenant ça marche cause du délai d'attente.



1
votes

Autant que je me souvienne par défaut, l'ajoutefauldentialsProperty est défini sur true. Donc, cela pourrait causer l'erreur d'authentification que vous avez obtenue. Essayez d'ajouter ces lignes de la réponse précédente à votre code

SmtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
SmtpServer.UseDefaultCredentials = false;


0 commentaires

2
votes

J'ai eu le code que Ferruccio a affiché et cela a récemment cessé de fonctionner. J'ai déplacé mes paramètres dans le fichier .config pour mon site et il a commencé à travailler à nouveau:

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


0 commentaires

0
votes

eut du mal avec la même erreur. Avec smtp.gmail.com, Google bloque toutes les tentatives de connexion à l'e-mail de l'expéditeur, à moins que ce ne soit authentifié. Connectez-vous à votre compte de messagerie et agissez sur le courrier de vérification envoyé. Cela accordera l'accès à votre application C #


0 commentaires