web-dev-qa-db-fra.com

C # SMTP ne parvient pas à s'authentifier sur Outlook.com, port 587. "La réponse du serveur était: 5.7.1 Le client n'était pas authentifié"

J'essaie d'envoyer des courriels automatisés (raison commerciale essentielle - pas pourriel!). Un code similaire à celui ci-dessous fonctionnait avec un autre fournisseur de service de messagerie, mais le client a migré vers "Outlook.com" et il obtient maintenant:

    The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.1 Client was not authenticated

Ce code (C #) devrait sûrement fonctionner:

    private void Send_Click(object sender, EventArgs e)
    {
        MailMessage message = null;
        try
        {
            message = new MailMessage(From, To);
            message.Subject = "Update Request Session from " + From;
            message.CC.Add(Cc);
            message.Body = "Test message: please ignore.";
            message.IsBodyHtml = false;

            SmtpClient client = new SmtpClient("smtp.Outlook.com", 587);
            client.Credentials = new System.Net.NetworkCredential(From, Password);
            client.UseDefaultCredentials = false;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.EnableSsl = true;

            client.Send(message);
        }
        catch (Exception ex)
        {
            Status.Text = ex.Message;
        }

        if (message != null)
        {
            message.Dispose();
        }
    }

Veuillez noter que DeliveryMethod et EnableSsl sont définis et que le port est 587.

J'ai créé un autre compte de test sur mon client Outlook (le programme de bureau, pas le service Web) pour tester les paramètres utilisés par le code ci-dessus:

  • nom d'utilisateur
  • mot de passe
  • smtp.Outlook.com
  • 587
  • TLS

et les "Paramètres du compte de test" dans Outlook indiquent que les paramètres sont corrects ("Tâche: Envoyer un message électronique de test - État: Terminé"). Je pense donc que le nom d'utilisateur et le mot de passe doivent être corrects.

J'ai activé la connexion détaillée comme décrit ici: http://social.msdn.Microsoft.com/Forums/en-US/netfxnetcom/thread/28b5a576-0da2-42c9-8de3-f2bd1f30ded4/ . Cela a produit beaucoup de résultats, trop pour être publiés ici. Voici les dernières lignes:

System.Net Information: 0 : [6312] SecureChannel#28756230 - Remote certificate was verified as valid by the user.
System.Net.Sockets Verbose: 0 : [6312] Socket#59109011::Send()
System.Net.Sockets Verbose: 0 : [6312] Data from Socket#59109011::Send
System.Net.Sockets Verbose: 0 : [6312] 00000000 : 17 03 01 00 30 4B BC 72-D3 A8 D7 EC FB 3C 21 0F : ....0K.r.....<!.
System.Net.Sockets Verbose: 0 : [6312] 00000010 : D7 BA A2 1F 72 1D D0 E6-4B DB 9A EC 9E 70 FD BC : ....r...K....p..
System.Net.Sockets Verbose: 0 : [6312] 00000020 : 73 B9 CC 6A 11 9E 32 E0-B2 47 D7 35 C0 BA CD DE : s..j..2..G.5....
System.Net.Sockets Verbose: 0 : [6312] 00000030 : 38 CA F6 93 8E                                  : 8....
System.Net.Sockets Verbose: 0 : [6312] Exiting Socket#59109011::Send()  -> 53#53
System.Net.Sockets Verbose: 0 : [6312] Socket#59109011::Receive()
System.Net.Sockets Verbose: 0 : [6312] Data from Socket#59109011::Receive
System.Net.Sockets Verbose: 0 : [6312] 00000000 : 17 03 01 00 D0                                  : .....
System.Net.Sockets Verbose: 0 : [6312] Exiting Socket#59109011::Receive()   -> 5#5
System.Net.Sockets Verbose: 0 : [6312] Socket#59109011::Receive()
System.Net.Sockets Verbose: 0 : [6312] Data from Socket#59109011::Receive
System.Net.Sockets Verbose: 0 : [6312] 00000005 : 4D 6F 22 3C B8 A4 39 14-B0 FC B9 58 23 9A 26 70 : Mo"<..9....X#.&p
System.Net.Sockets Verbose: 0 : [6312] 00000015 : 89 52 B4 E1 8D 74 D6 23-5C 2B 7C 44 6E EB 1A F7 : .R...t.#\+|Dn...
System.Net.Sockets Verbose: 0 : [6312] 00000025 : 7A 56 3D 18 0E 93 9C C5-C6 43 28 25 AA 3D DF 89 : zV=......C(%.=..
System.Net.Sockets Verbose: 0 : [6312] 00000035 : 46 78 9B 69 ED FA 51 65-29 D9 DF A6 3F 9F 9F 25 : Fx.i..Qe)...?..%
System.Net.Sockets Verbose: 0 : [6312] 00000045 : 22 18 99 13 6A AA FB 49-BE 9C 53 F2 96 3C 5A 5A : "...j..I..S..<ZZ
System.Net.Sockets Verbose: 0 : [6312] 00000055 : 60 E1 23 FA CA 92 B9 4A-75 9D 87 D5 66 4D FB 84 : `.#....Ju...fM..
System.Net.Sockets Verbose: 0 : [6312] 00000065 : 99 63 D1 27 C9 41 90 C8-3D BE 82 E6 A2 62 EB 56 : .c.'.A..=....b.V
System.Net.Sockets Verbose: 0 : [6312] 00000075 : 5E D0 ED 67 B3 67 FD 6A-B0 99 34 07 DA 88 3D 02 : ^..g.g.j..4...=.
System.Net.Sockets Verbose: 0 : [6312] 00000085 : 2E E6 E5 DB 4F E7 C0 EF-A9 AD 01 C0 5D FE 94 19 : ....O.......]...
System.Net.Sockets Verbose: 0 : [6312] 00000095 : 92 0A 0E 6F C3 C7 F5 62-E4 15 F2 6D 56 A4 5B 74 : ...o...b...mV.[t
System.Net.Sockets Verbose: 0 : [6312] 000000A5 : C0 7A 2F 16 A7 F2 C0 F8-F4 90 00 EB DB 52 90 85 : .z/..........R..
System.Net.Sockets Verbose: 0 : [6312] 000000B5 : ED FA C6 91 5A 32 49 4A-9F F9 1D 11 62 97 C7 DC : ....Z2IJ....b...
System.Net.Sockets Verbose: 0 : [6312] 000000C5 : 96 11 67 E0 95 D2 95 0C-D9 41 C9 81 F8 4C 58 0F : ..g......A...LX.
System.Net.Sockets Verbose: 0 : [6312] Exiting Socket#59109011::Receive()   -> 208#208
System.Net.Sockets Verbose: 0 : [6312] Socket#59109011::Send()
System.Net.Sockets Verbose: 0 : [6312] Data from Socket#59109011::Send
System.Net.Sockets Verbose: 0 : [6312] 00000000 : 17 03 01 00 40 45 FD 20-1F 27 A1 B3 50 A3 99 5D : ....@E. .'..P..]
System.Net.Sockets Verbose: 0 : [6312] 00000010 : F3 DA 03 7E 47 C4 8C 91-21 7F 25 7C 09 CC E4 68 : ...~G...!.%|...h
System.Net.Sockets Verbose: 0 : [6312] 00000020 : 27 95 BE C7 FB 9E BC 65-67 64 CE C7 BE 4A BB 48 : '......egd...J.H
System.Net.Sockets Verbose: 0 : [6312] 00000030 : 89 36 A4 A4 90 B4 7B B4-C0 B5 DB 5B 18 3F 4A C3 : .6....{....[.?J.
System.Net.Sockets Verbose: 0 : [6312] 00000040 : A2 DB 51 B5 46                                  : ..Q.F
System.Net.Sockets Verbose: 0 : [6312] Exiting Socket#59109011::Send()  -> 69#69
System.Net.Sockets Verbose: 0 : [6312] Socket#59109011::Receive()
System.Net.Sockets Verbose: 0 : [6312] Data from Socket#59109011::Receive
System.Net.Sockets Verbose: 0 : [6312] 00000000 : 17 03 01 00 40                                  : ....@
System.Net.Sockets Verbose: 0 : [6312] Exiting Socket#59109011::Receive()   -> 5#5
System.Net.Sockets Verbose: 0 : [6312] Socket#59109011::Receive()
System.Net.Sockets Verbose: 0 : [6312] Data from Socket#59109011::Receive
System.Net.Sockets Verbose: 0 : [6312] 00000005 : 43 8E E7 44 71 B3 84 BC-5F 08 39 CE B1 3A A4 F9 : C..Dq..._.9..:..
System.Net.Sockets Verbose: 0 : [6312] 00000015 : F4 92 BE B3 D7 10 81 14-B9 5B BA E3 35 93 34 12 : .........[..5.4.
System.Net.Sockets Verbose: 0 : [6312] 00000025 : AF 32 F1 69 82 BD B9 8B-4C 2F 47 5F 8B 95 7E 52 : .2.i....L/G_..~R
System.Net.Sockets Verbose: 0 : [6312] 00000035 : 94 4C A6 79 6A F6 E2 84-D1 9E A5 D3 16 98 44 E1 : .L.yj.........D.
System.Net.Sockets Verbose: 0 : [6312] Exiting Socket#59109011::Receive()   -> 64#64
System.Net Error: 0 : [6312] Exception in the SmtpClient#44419000::Send - The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.1 Client was not authenticated
System.Net Error: 0 : [6312]    at     System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response)
   at     System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, String from)
   at     System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception)
   at     System.Net.Mail.SmtpClient.Send(MailMessage message)
System.Net.Sockets Verbose: 0 : [6312] Socket#59109011::Dispose()
System.Net Verbose: 0 : [6312] Exiting SmtpClient#44419000::Send() 

La première de ces lignes me suggère que SmtpClient et Outlook.com se sont mis d’accord sur les protocoles de cryptage à utiliser, mais le reste n’a guère d’impact sur la barre «5.7.1 Le client n’a pas été authentifié».

Quelqu'un at-il rencontré des problèmes similaires lors de la connexion à Outlook.com?

Merci d'avance.

Ross

20
RAM

Je sais que cela semble étrange, mais AFAI n’oubliez pas que vous devez utiliser le UseDefaultCredentials = false avant de définir Credentials. changez votre code en:

client.UseDefaultCredentials = false;    
client.Credentials = new System.Net.NetworkCredential(From, Password);
26
Arash Milani
5
Peter E Grout

Assurez-vous également que vous utilisez un mot de passe d'application (peut être créé ici ) si l'authentification en 2 étapes a été activée pour votre compte Microsoft.

0
White hawk