none
Le serveur SMTP requiert une connexion sécurisée

    Question

  • Bonjour,

    je me suis mis à Asp.net et developpe un site d'e-commerce en suivant un tutoriel, j'utilisais une connexion avec authentification SQL SERVER, et j'ai opté pour connexion avec authentification windows comme le veut le tutoriel. Dès lors, je n'arrive plus à afficher mes pages en locales. Je precise que le projet est dans sa phase de conception. Mon souhait est finir le projet avec ce mode connexion.

    et voici le message qui s'affiche:

    Erreur du serveur dans l'application '/'.

    Le serveur SMTP requiert une connexion sécurisée ou le client n'était pas authentifié. La réponse du serveur était : 5.5.1 Authentication Required. Learn more at

    Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.Net.Mail.SmtpException: Le serveur SMTP requiert une connexion sécurisée ou le client n'était pas authentifié. La réponse du serveur était : 5.5.1 Authentication Required. Learn more at

    Erreur source:
    Ligne 18 :             MailMessage mailMessage = new MailMessage(from, to, subject, body);
    Ligne 19 : 
    Ligne 20 :             mailClient.Send(mailMessage);
    Ligne 21 :         
    Ligne 22 :         

    Fichier source : d:\WebSites\VentePC\App_Code\Utilities.cs    Ligne : 20

    Trace de la pile:
    [SmtpException: Le serveur SMTP requiert une connexion sécurisée ou le client n'était pas authentifié. La réponse du serveur était : 5.5.1 Authentication Required. Learn more at]
       System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response) +1432119
       System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, MailAddress from, Boolean allowUnicode) +46
       System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, Boolean allowUnicode, SmtpFailedRecipientException& exception) +88
       System.Net.Mail.SmtpClient.Send(MailMessage message) +1852
       Utilities.SendMail(String from, String to, String subject, String body) in d:\WebSites\VentePC\App_Code\Utilities.cs:20
       Utilities.LogError(Exception ex) in d:\WebSites\VentePC\App_Code\Utilities.cs:51
       DataAccess.ExecuteSelectCommand(DbCommand command) in d:\WebSites\VentePC\App_Code\DataAccess.cs:49
       CatalogAccess.GetCategoriesInVendor(Int32 vendorId) in d:\WebSites\VentePC\App_Code\Catalog\CatalogAccess.cs:36
       Controls_uc_VendorCategory.Page_Load(Object sender, EventArgs e) in d:\WebSites\VentePC\Controls\uc_VendorCategory.ascx.cs:21
       System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
       System.Web.UI.Control.OnLoad(EventArgs e) +92
       System.Web.UI.Control.LoadRecursive() +54
       System.Web.UI.Control.LoadRecursive() +145
       System.Web.UI.Control.LoadRecursive() +145
       System.Web.UI.Control.LoadRecursive() +145
       System.Web.UI.Control.LoadRecursive() +145
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772
    


    Informations sur la version : Version Microsoft .NET Framework :4.0.30319; Version ASP.NET :4.0.30319.17929

    3 jours que ça dure, besoin d'aide.


    jeudi 26 septembre 2013 00:44

Réponses

  • Bonjour,

    Il faut spécifiez votre login et mot de passe de votre messagerie GMail. Mais aussi vous devez spécifier le port "465" :

    <network host="smtp.gmail.com" userName="votre_email@gmail.com" password="votrePasswordGmail" enableSsl="true" port="465"/>
    

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    vendredi 27 septembre 2013 17:59

Toutes les réponses

  • Bonjour,

    Ce problème indique que votre serveur SMTP requiert que vous vous authentifiez via un login/mot de passe. Voilà le code à utiliser :

    SmtpClient mailClient;
    mailClient = new SmtpClient("monhost.com");
    mailClient.Credentials = new NetworkCredential("Login", "Mot de passe");
    
    mailClient.Send(monMail);

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    jeudi 26 septembre 2013 06:58
  • Bonjour,

    Merci de la réponse, comme je l'ai dis par conformité au tutoriel que je voudrais transformer le mode connexion en windows authentification, je sais qu'avec le mot le login et le mot de passe ça marche. mais comment le faire avec l'authentification windows? Tel est la question.

    jeudi 26 septembre 2013 12:29
  • Bonjour

    Vous pouvez utiliser la propriété UseDefaultCredentials:

     http://msdn.microsoft.com/fr-fr/library/system.net.mail.smtpclient.usedefaultcredentials.aspx

    Et utilizer mailClient.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials

    http://msdn.microsoft.com/fr-fr/library/system.net.credentialcache.defaultnetworkcredentials.aspx

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    jeudi 26 septembre 2013 13:00
  • J'ai repris votre question et j'ai remarqué que c'est pour un site de eCommerce. En plus n'est pas très clair ou vous utilisez l'authentiquassions Windows (avec SQL, ou avec votre site).
    Je trouve que n'est pas une bonne idée de créer un utilisateur Windows pour chaque utilisateur de l'application.
    Pouvez-vous nous donner plusieurs détails sur la configuration de votre site/connexion BD/connexion serveur mail ?


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    jeudi 26 septembre 2013 13:15
  • Bonjour,

     Le site est encore en phase de conception, et j'utilise une authentification SQL SERVER pour la BD. La partie connexion du site n'a pas encore été élaborée. sur vos conseils j'ai mis" mailClient.UseDefaultCredentials = true;" comme le montre le code ci dessous. Mais l"erreur persiste. Au débogage je constate que c'est à partir du paramètre que je nomme body que l'erreur est signalée.

                SmtpClient mailClient               = new SmtpClient(ApplicationConfiguration.MailServer);
            
                MailMessage mailMessage             = new MailMessage(from, to, subject, body);
                mailClient.UseDefaultCredentials = true;
                mailClient.Send(mailMessage);
            
    j'enlève " mailClient.UseDefaultCredentials = true;", l'erreur persiste. je ne sais plus quoi faire.


    vendredi 27 septembre 2013 08:44
  • Bonjour,

    Quelle authentification requiert votre serveur de messagerie ?
    Avez-vous essayé d'utiliser et d'envoyer un mail via votre serveur SMTP directement via un client de messagerie tel que Outlook ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    vendredi 27 septembre 2013 08:58
  • Je me reprends, le site est encore en conception. au fil des progrès je teste l'affichage des pages. Et dès que j'ai chargé mon "userControl". j'ai eu ce problème. il n'est pas encore fonctionnel. Pour moi rien ne sert de poursuivre le tutoriel, avec une erreur. Je ne sais pas si c'est moi qui me précipite. Aucune messagerie OUTLOOK pour le moment.

    Merci pour vos efforts.

    vendredi 27 septembre 2013 09:33
  • Pouvez-vous nous montrer ce tutoriel?

    L'authentiquassions Windows se prête bien pour une application entreprise mais pas pour site e-Commerce.

     Pour chaque utilisateur de votre site vous devez créer un utilisateur dans votre Active Directory. Ça c’est  au milieu du chemin entre «Très difficile » et  «Impossible» avec des gros problèmes de sécurité. Donc soit on n’a pas bien compris ce que vous voulez soit vous n’avez pas choisi la bonne solution. 

    Voir ici quelques details sur l'authentication Windows avec ASP:

    http://weblogs.asp.net/hajan/archive/2011/03/26/nopcommerce-asp-net-open-source-e-commerce-solution.aspx

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 27 septembre 2013 10:12
  • Je pense ne pas avoir choisi la bonne solution. Alors quelle solution me proposez vous?
    vendredi 27 septembre 2013 10:19
  • Bonjour,

    La solution la plus simple est d'utiliser un login et mot de passe classique (via le classe NetworkCredentials). Ce login et mot de passe est normalement fourni par le propriétaire sur serveur SMTP (afin que seul les personnes authentifiées puissent envoyer des mails).

    Quelle serveur SMTP souhaitez vous utiliser pour envoyer vos messages ? Celui de votre FAI ? Celui d'un hébergeur ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    vendredi 27 septembre 2013 10:55
  • Ici vous avez quelques details sur l'authentication avec WebFroms :

    http://msdn.microsoft.com/fr-fr/library/xdt4thhy(v=vs.100).aspx

    Pour le SMTP  vous avez les réponses de Gilles.

    Cordialement,



    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    vendredi 27 septembre 2013 11:13
  • Bonsoir,

    J'utiliserai le smtp de google, je ne fais que suivre le tuto. Vous avez ici mon web.config:

    <?xml version="1.0" encoding="utf-8"?>
    
    <!--
      Pour plus d'informations sur la configuration de votre application ASP.NET, consultez
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
    
    <configuration>
    
      <connectionStrings>
        <add name="VentePCConnectionString" connectionString="Data Source=mon-PC;Initial Catalog=VentePC;Integrated Security=True "
          providerName="System.Data.SqlClient" />
        </connectionStrings>
        <system.web>
          <compilation debug="true" targetFramework="4.0" />
        </system.web>
    
      <!--réglages des erreurs-dans ce dossier facilite maintenance-->
    <appSettings>
      <add key="EnableErrorLog" value="True"/>
      <add key="ErrorLogEmail" value="monmail@gmail.com"/>
      <add key="SiteName" value="monsite.com@localhost"/>
    </appSettings>
    
      <system.net>
        <mailSettings>
          <smtp deliveryMethod="Network">
            <network host="smtp.gmail.com" userName="" password="" enableSsl="true"/>
          </smtp>
        </mailSettings>
      </system.net>
    </configuration>
    
    
     
    
    
    
     

    Excusez moi, n'aurais pas d'autre fonctionnalité tels les authentification à activer sur IIS?

    vendredi 27 septembre 2013 17:10
  • Bonjour,

    Il faut spécifiez votre login et mot de passe de votre messagerie GMail. Mais aussi vous devez spécifier le port "465" :

    <network host="smtp.gmail.com" userName="votre_email@gmail.com" password="votrePasswordGmail" enableSsl="true" port="465"/>
    

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    vendredi 27 septembre 2013 17:59
  • Bonsoir à vous,

    Résolu. Merci à vous 2 qui m'avez aidé à résoudre ce problème. Le dernier message de Mr Gilles Tourreau était la bonne.


    samedi 28 septembre 2013 23:34