2015-07-05 18 views
9

Próbuję połączyć się z moim kontem Gmail przez SmtpClient, ale wygląda na to, że nie działa tak, jak powinien. Podaję port 465, włączam SSL i definiuję wszystko, ale zajmuje to około 2 minuty, a następnie pokazuje tylko błąd, że wiadomość nie została wysłana.Używanie SmtpClient do wysyłania wiadomości e-mail z Gmaila

Co ja tu robię źle?

try 
{ 
    MailMessage msg = new MailMessage(); 
    msg.From = new MailAddress("[email protected]); 
    msg.To.Add(new MailAddress("[email protected])); 
    msg.Subject = "This is the subject"; 
    msg.Body = "This is the body"; 
    SmtpClient sc = new SmtpClient("smtp.gmail.com", 465); 
    sc.EnableSsl = true; 
    sc.UseDefaultCredentials = false; 
    sc.Credentials = new NetworkCredential("[email protected]", "pass"); 
    sc.DeliveryMethod = SmtpDeliveryMethod.Network; 
    sc.Send(msg); 
    erroremail.Text = "Email has been sent successfully."; 
} 
catch (Exception ex) 
{ 
    erroremail.Text = "ERROR: " + ex.Message; 
} 
+0

zrobiłem, a potem mówi: 'BŁĄD: Serwer SMTP wymaga bezpiecznego połączenie lub klient nie został uwierzytelniony. ". – Aradmey

+0

W porządku, to nie był problem z kodem, ale ustawienia Gmaila zablokowały połączenie. Teraz działa! – Aradmey

Odpowiedz

17

Musisz zezwolić na "mniej bezpieczne aplikacje":

https://support.google.com/accounts/answer/6010255

Kod:

try 
{ 
    new SmtpClient 
    { 
     Host = "Smtp.Gmail.com", 
     Port = 587, 
     EnableSsl = true, 
     Timeout = 10000, 
     DeliveryMethod = SmtpDeliveryMethod.Network, 
     UseDefaultCredentials = false, 
     Credentials = new NetworkCredential("[email protected]", "MyPassword") 
    }.Send(new MailMessage {From = new MailAddress("[email protected]", "MyName"), To = {"[email protected]"}, Subject = "Subject", Body = "Message", BodyEncoding = Encoding.UTF8}); 
    erroremail.Text = "Email has been sent successfully."; 
} 
catch (Exception ex) 
{ 
    erroremail.Text = "ERROR: " + ex.Message; 
} 
+0

@Anatoly Umieścił już łącze w swojej odpowiedzi. Mniej bezpieczna aplikacja to ustawienie konta Google, które pozwala Twojej aplikacji wysyłać wiadomości e-mail w imieniu Ciebie. –

+0

Zastanawiam się, czego brakuje "nowoczesnych standardów bezpieczeństwa" SmtpClient i czy istnieje natywna alternatywa .NET, która nie wymaga ustawiania tej opcji konta. – Slight

+0

Witam, czy możesz skomentować, w jaki sposób są zabezpieczane poświadczenia sieciowe? Ok, widzę - włączone SSL. Ale w moim przypadku - mam czas oczekiwania ... – Prokurors

Powiązane problemy