Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Authentication through smtp with System.Net fails

Îåêßíçóå áðü ôï ìÝëïò Chrysostomos Kolovos. Τελευταία δημοσίευση από το μέλος Chrysostomos Kolovos στις 13-03-2013, 16:44. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  13-03-2013, 15:05 72311

    Authentication through smtp with System.Net fails

    Έχω ένα πρόβλημα με την αποστολή ενός Mail από ένα mail server τρίτου. Εκ τον προτέρων αναφέρω ότι δεν έχω καμία πρόσβαση στο mail server. Η πρόσβαση γίνετε με απλό smtp authentication στην 25 χωρίς ssl. Με τα στοιχεία που έχω στο outlook και στο thunderbird που δοκίμασα όλα λειτουργούν κανονικά. Όταν πάω να στείλω όμως από .net application μου βγάζει authentication fail. Παραθέτω τις ρυθμίσεις και τον κώδικα.

    try
                {
                    MailMessage mail = new MailMessage("[email protected]", "[email protected]");
                    SmtpClient client = new SmtpClient();
                    client.Port = 25;
                    client.DeliveryMethod = SmtpDeliveryMethod.Network;
                    //client.UseDefaultCredentials = true;
                    //client.EnableSsl = false;
                    //client.Credentials = new System.Net.NetworkCredential("[email protected]", "123");
    
                    //client.DeliveryFormat = SmtpDeliveryFormat.International;
                    //client.ServicePoint.Expect100Continue = false;
    
                    mail.Subject = "this is a test email.";
                    mail.Body = "this is my test email body";
                    client.Send(mail);
                }
                catch (SmtpException smtpex)
                {
                    throw smtpex;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
    και το config
    <system.net>
          <mailSettings>
            <smtp deliveryMethod="Network" from="[email protected]" >
              <network host="mail.mydomain.gr"
                        port="25"
                        defaultCredentials="false"  
                        userName="user"
                        password="pass" enableSsl="false"/>
            </smtp>
          </mailSettings>
        </system.net>

    Τα στοιχεία σύνδεσης(κωδικοί,user,host, μπλα μπλα) έχουν χιλιοτσεκαριστεί και από το ίδιο pc στο Outlook/thunderbird δουλεύουν.





  •  13-03-2013, 15:51 72312 σε απάντηση της 72311

    Απ: Authentication through smtp with System.Net fails

    Βλέπω ότι αρχικά δοκίμασες να συνδεθείς δίνοντας απευθείας τα credentials και μετά δοκίμασες να τα βάλεις στο config. Και οι δύο τρόποι είναι ισοδύναμοι. Στο credentials όμως έχεις βάλει το [email protected] ως username ενώ στο config το user μόνο. Ποιό από τα δύο ισχύει?

    Επιπλέον, στο Outlook χρειάζεται να βάλεις credentials ΚΑΙ στις ρυθμίσεις του SMTP? Κατά κανόνα δεν χρειάζεται authentication για να στείλεις email σε ένα SMTP server και τα credentials που δίνεις αφορούν το POP3, όχι το SMTP.

    Καταρχήν θα πρέπει να ενεργοποιήσεις το logging του System.Net για να δείς τί πραγματικά συμβαίνει και τί φεύγει και επιστρέφει από το server. Αυτό μπορείς να το κάνεις προσθέτωντας το παρακάτω στο config:

     <system.diagnostics>
        <trace autoflush="true" />
    
        <sources>
    
          <source name="System.Net" >
            <listeners>
              <add name="MyTraceFile"/>
            </listeners>
          </source>
    
          <source name="System.Net.Sockets">
            <listeners>
              <add name="MyTraceFile"/>
            </listeners>
          </source>
    
        </sources>
     
    
        <sharedListeners>
          <add
            name="MyTraceFile"
            type="System.Diagnostics.TextWriterTraceListener"
            initializeData="System.Net.trace.log"                />
        </sharedListeners>
    
        <switches>
          <add name="System.Net" value="Verbose" />
          <add name="System.Net.Sockets" value="Verbose" />
        </switches>
    Αντί για System.Net.trace.log φυσικά μπορείς να βάλεις το αρχείο που θέλεις εσύ.

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  13-03-2013, 16:01 72313 σε απάντηση της 72312

    Απ: Authentication through smtp with System.Net fails

    Αυτό με τους κωδικούς είναι γιατί έχω δοκιμάσει όλους τους πιθανούς συνδυασμούς. Απλά εδώ ανέφερα το σωστό τρόπο και έμεινα εκεί. Θα κοιτάξω το logging να δώ τι θα λέει. Ο συγκεκριμένος mail server χρειάζεται authentication και είναι τα ίδια με του pop. Δοκίμασα με το OpenPop.NET τώρα και συνδέθηκα κανονικά πάνω στο Server και τράβηξα Mail. Αλλά το smtp δε δούλεψε μετά. 

  •  13-03-2013, 16:41 72314 σε απάντηση της 72313

    Απ: Authentication through smtp with System.Net fails

    Δεν έχει νόημα να ψάχνεις με τον ένα ή τον άλλο client, όταν το πρόβλημα σχεδόν σίγουρα οφείλεται σε κάποια λάθος ρύθμιση. Πρώτα θα πρέπει να δεις τί συμβαίνει και μετά να το διορθώσεις.

    Παρεμπιπτόντως, το SMTP είναι ένα απλό text πρωτόκολλο. Μπορείς άνετα να συνδεθείς στον SMTP server με telnet στην 25 και να αρχίσεις να δίνεις τις εντολές με το χέρι. Αυτός είναι ίσως και ο ευκολότερος τρόπος να βεβαιωθείς για το τί στέλνεται στον άλλο server.

    Αλήθεια, ποιό είναι ακριβώς το μήνυμα λάθους και τί έκδοση είναι ο SMTP server? Υποψιάζομαι ότι μπορεί ο server να "πνίγεται" λόγω ειδικών χαρακτήρων στο password.

    Μπορείς επίσης να συγκρίνεις τη διαφορά μεταξύ του SmtpClient και του Outlook αν εγκαταστήσεις το Wireshark και συγκρίνεις το capture που δημιουργείται όταν χρησιμοποιείς τους δύο διαφορετικούς clients. 

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  13-03-2013, 16:44 72315 σε απάντηση της 72313

    Απ: Authentication through smtp with System.Net fails

    Έστειλα mail. 

    ...

    Με βοήθησε το σχετικό link -> http://support.microsoft.com/kb/555287
    Για να το καταφέρω χρησιμοποίησα την System.Web.Mail. Το θέμα που εντόπισα, αν δεν κάνω λάθος, είναι με το smtpauthenticate(basic clear-text authentication). Αυτό που είδα στο log είναι ότι τα στοιχεία του username & password είναι encrypted οπότε άρχισα να ψάχνω πως μπορώ να το στείλω σαν plain text. Έτσι έφτασα εδώ. Και έπαιξε. Βέβαια η System.Web.Mail είναι deprecated. Άρα δεν είναι σωστή λύση. Καμιά ιδέα;

    Πάντως όλα ξεκίνησαν από το log...




Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems