Partage
  • Partager sur Facebook
  • Partager sur Twitter

Envoyer un email ASP.net

    13 novembre 2017 à 18:35:17

    Bonjour,

    J'essaye sans succès d'envoyer un email avec le code suivant lors d'un clic sur un bouton.

     protected void Send_Click(object sender, EventArgs e)
            {
                MailMessage mail = new MailMessage();
                mail.From = new MailAddress("mailautomatiquenepasrepondre@gmail.com");
                mail.To.Add("emaildestinataire@gmail.com");
                mail.Subject = "This is test subject";
                mail.Body = "This is the c sharp mail content";
                SmtpClient smtp = new SmtpClient();
                smtp.Host = "smtp.gmail.com";
                smtp.EnableSsl = true;
                smtp.Port = 465;
                NetworkCredential Credentials = new NetworkCredential("mailautomatiquenepasrepondre@gmail.com", "motdepasse");
                smtp.Credentials = Credentials;
                smtp.Send(mail);
    
            }

    J'ai pourtant bien utilisé les parametres indiqués par gmail à savoir : https://support.google.com/a/answer/176600?hl=fr

    J'ai également autorisé l’accès au applications moins sécurisées.

    Avez vous une idée du soucis ?


    Merci



    • Partager sur Facebook
    • Partager sur Twitter
      13 novembre 2017 à 18:57:44

      Tu peux essayer avec l'autre port ?
      Le 587.

      J'ai l'impression que ton EnableSsl ne suffit pas, dans mes souvenirs il fallait un objet Server que tu tu passes à la méthode Send(...) et pour lequel tu précises que le ConnectionType est du Ssl.

      Tu devrais nous donner le message d'erreur également.

      • Partager sur Facebook
      • Partager sur Twitter
      Si un message vous a aidé, n'oubliez pas le +1 et de passer votre sujet en "Résolu" ! :)
        13 novembre 2017 à 19:27:08

        Effectivement, celà marche avec le port 587, mais pas avec le port 465 comme indiqué par google.

        Merci, mais saurais tu me dire pourquoi mon enable ssl ne suffit pas ? 

        • Partager sur Facebook
        • Partager sur Twitter
          13 novembre 2017 à 20:20:30

          Il faudrait checker la doc, il me semble que ton EnableSsl est côté client, genre ok je peux recevoir des mails mais qu'il ne change pas la façon de se connecter au serveur.

          Pour ça il faut voir la deuxième idée que j'ai indiqué dans mon message d'origine.

          -
          Edité par Pyrobolser 13 novembre 2017 à 20:58:24

          • Partager sur Facebook
          • Partager sur Twitter
          Si un message vous a aidé, n'oubliez pas le +1 et de passer votre sujet en "Résolu" ! :)
            17 novembre 2017 à 8:21:13

            Bonjour,

            De retour car je rencontre de nouveau un soucis.

            J'ai pris un hebergeur (1and1), et ai configuré une adresse email.

            J'ai appliqué les bonnes informations au niveau du SMTP, du port etc... celà fonctionne parfaitement avec visual studio.

            Par contre, sur mon site hebergé c'est une autre histoire. J'obtiens l'erreur suivante : 

            Runtime Error
            
            Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine. 
            
            Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".
            
            
            <!-- Web.Config Configuration File -->
            
            <configuration>
                <system.web>
                    <customErrors mode="Off"/>
                </system.web>
            </configuration>
            
            Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.
            
            
            <!-- Web.Config Configuration File -->
            
            <configuration>
                <system.web>
                    <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
                </system.web>
            </configuration>

            Je précise que j'obtiens également une erreur avec l'adresse gmail que j'avais configuré et qui marchait aussi sur visual studio.

            Avez vous une idée ?


            Merci

            • Partager sur Facebook
            • Partager sur Twitter
              17 novembre 2017 à 10:31:04

              Appliquez temporairement ce qui est indiqué dans le message d'erreur.

              Cela permet d'avoir plus d'informations.

              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                17 novembre 2017 à 10:54:14

                Effectivement, voici l'erreur : 

                A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 212.227.15.168:587
                
                Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
                
                Exception Details: System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 212.227.15.168:587
                
                Source Error: 
                
                An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
                
                Stack Trace: 
                
                
                [SocketException (0x274c): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 212.227.15.168:587]
                   System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) +6765742
                   System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception) +496
                
                [WebException: Unable to connect to the remote server]
                   System.Net.ServicePoint.GetConnection(PooledStream PooledStream, Object owner, Boolean async, IPAddress& address, Socket& abortSocket, Socket& abortSocket6) +6586060
                   System.Net.PooledStream.Activate(Object owningObject, Boolean async, GeneralAsyncDelegate asyncCallback) +302
                   System.Net.PooledStream.Activate(Object owningObject, GeneralAsyncDelegate asyncCallback) +23
                   System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout) +328
                   System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint) +141
                   System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint) +222
                   System.Net.Mail.SmtpClient.GetConnection() +45
                   System.Net.Mail.SmtpClient.Send(MailMessage message) +1557
                
                [SmtpException: Failure sending mail.]
                   System.Net.Mail.SmtpClient.Send(MailMessage message) +1905
                   LocationAirBnB.Contact.Send_Click(Object sender, EventArgs e) in C:\Users\dorian\Documents\Visual Studio 2017\Projects\LocationAirBnB\LocationAirBnB\Contact.aspx.cs:32
                   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9767618
                   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +204
                   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
                   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
                   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
                   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1738



                • Partager sur Facebook
                • Partager sur Twitter
                  17 novembre 2017 à 11:10:05

                  Êtes-vous sûr que l'hébergeur laisse sortir les requêtes vers le port TCP 587 ?

                  -
                  Edité par bacelar 17 novembre 2017 à 11:10:30

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                    17 novembre 2017 à 11:41:02

                    Voici la doc de 1and1 : https://assistance.1and1.fr/email-and-office-365-c65618/boite-1and1-email-basic-c65666/logiciels-de-messagerie-c85133/serveurs-popimapsmtp-pour-configurer-une-boite-1and1-email-basicpro-a792332.html

                    Comme avec gmail, le port 465 me sort une erreur, que ce soit sur visual studio ou avec le site sur l'hebergeur.

                    J'ai donc essayé le port 587 comme indiqué plus haut et celà marche avec mon adresse mail Gmail et 1and1, mais uniquement quand je l'execute sur visual studio. Une fois le site hébergé, j'ai de nouveau un message d'erreur.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 novembre 2017 à 12:17:25

                      La configuration des firewall chez vous et celle chez votre hébergeur sont totalement différentes.

                      Comme 1and1 offre des solutions de mailing, il y a de grande chance qu'ils bloquent, au moins par défaut, les ports permettant d'envoyer des mail.

                      Il faudrait voir avec leur support l'ouverture des ports nécessaires.

                      Pour entériner mon analyse, essayez d'utiliser les utilitaires réseaux depuis la machine hôte de 1and1 pour bien vérifier la connectivité réseau vers 212.227.15.168, puis les ports ouverts par les firewalls.

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                        17 novembre 2017 à 14:54:52

                        Bon, j'ai trouvé, mais pas vraiment.

                        J'ai pris dans la doc le code suivant : https://help.1and1.com/hosting-c37630/scripts-and-programming-languages-c85099/aspnet-c39624/send-an-e-mail-using-aspnet-a604246.html

                        //create the mail message
                        MailMessage mail = new MailMessage();
                        //set the FROM address
                        mail.From = new MailAddress("address@yourdomain.com");
                        //set the RECIPIENTS
                        mail.To.Add("recipient@theirdomain.com");
                        //enter a SUBJECT
                        mail.Subject = "Set the subject of the mail here.";
                        //Enter the message BODY
                        mail.Body = "Enter text for the e-mail here.";
                        //set the mail server (default should be smtp.1and1.com)
                        SmtpClient smtp = new SmtpClient("smtp.1and1.com");
                        //Enter your full e-mail address and password
                        smtp.Credentials = new NetworkCredential("address@youdomain.com", "yourEmailPassword");
                        //send the message 
                        smtp.Send(mail);

                        Qui est exactement ce que j'ai mis, à l'exception de l'affectation de port où j'avais mis 465 comme indiqué, et la ligne SmtpClient smtp = new SmtpClient("smtp.1and1.com");, qui etait composée de deux lignes.

                        Maintenant ça marche....

                        -
                        Edité par Mortaurat 17 novembre 2017 à 15:21:41

                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 novembre 2017 à 15:34:26

                          Concrètement, vous ne faites pas la même chose.

                          En fait si, mais vous le faite avec un autre serveur de mail.

                          Avant, vous essayez d'utiliser le serveur de mail de gmail, donc passage à travers des problématiques de firewall.

                          Maintenant, vous demandez au serveur de mail de 1and1 de faire le boulot, qui lui, est du "bon côté" du firewall.

                          Attention au fait que les conditions d'utilisation de chacun des serveurs SMTP (Gmail et 1and1) n'ont rien à voir.

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                            17 novembre 2017 à 15:48:36

                            Non, je le faisais avec le même serveur mail (1and1). Effectivement mon premier mail porte à confusion.

                            Le probleme etait de la syntaxe.

                            je ne sais pas si c'est le fait d'avoir supprimé les lignes : 

                            smtp.EnableSsl = true;

                            smtp.Port = 465;

                            ou d'avoir remplacé : 

                            SmtpClient smtp = new SmtpClient();

                            smtp.Host = "smtp.gmail.com";

                            par SmtpClient smtp = new SmtpClient("smtp.1and1.com");

                            mais maintenant ça marche.

                            -
                            Edité par Mortaurat 17 novembre 2017 à 15:50:54

                            • Partager sur Facebook
                            • Partager sur Twitter
                              17 novembre 2017 à 15:53:07

                              Mortaurat a écrit:

                              ou d'avoir remplacé : 

                              SmtpClient smtp = new SmtpClient();

                              smtp.Host = "smtp.gmail.com";

                              par SmtpClient smtp = new SmtpClient("smtp.1and1.com");

                              mais maintenant ça marche.


                              En tout cas pour envoyer un mail depuis 1and1, google ne pouvait pas être l'hôte :)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 novembre 2017 à 8:52:13

                                Oui pardon, j'ai copié le smtp gmail, mais j'avais le smtp de 1 and 1 dans le code. C'est juste que j'ai fais un copié collé avec le premier poste :)
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Envoyer un email ASP.net

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown