2012-12-08 11 views
10

Próbuję wysłać wiadomość e-mail z adresem mojej witryny z aplikacji C#.
To działało dobrze przez kilka miesięcy do niedawna. (Być może mój dostawca zmienia pewne rzeczy lub kogoś innego zmianach w ustawieniach)System.Net.Mail.SmtpException: Serwer SMTP wymaga bezpiecznego połączenia lub klient nie był uwierzytelniony

Oto kod:

private void sendEmail(Email invite) { 
      MailMessage mail = new MailMessage(); 
      SmtpClient SmtpServer = new SmtpClient(smtpServerName); 
      mail.From = new MailAddress(emailUsername); 

      mail.To.Add(invite.RecipientEmail); 
      mail.Subject = invite.MessageSubject; 
      mail.Body = invite.MessageBody; 

      SmtpServer.UseDefaultCredentials = false; 
      SmtpServer.Port = 587; 
      SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword); 
//   SmtpServer.EnableSsl = true; 
      SmtpServer.Send(mail); 
     } 

Oto błąd:

The SMTP server requires a secure connection or the client was not authenticated. The server response was: SMTP authentication is required.

Patrząc na inne pytania próbowałem co sugeruje, aby zrobić SmtpServer.EnableSsl = true. To w ogóle nie działało. Dało to:

System.Net.Mail.SmtpException: Server does not support secure connections.

Zgaduję, że powinienem wyłączyć SSL i mieć go tak, jak było wcześniej.

Wszelkie sugestie dotyczące wysyłania wiadomości e-mail działają ponownie?

EDIT
Próbowałem bez SmtpServer.UseDefaultCredentials = false;
Próbowałam z nim wartość true: SmtpServer.UseDefaultCredentials =true;
Próbowałem komentowania tej linii wraz z następującym //SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);

+0

Zaleca się sprawdzenie ustawień połączenia klienta usługodawcy, aby upewnić się, że zostały poprawnie określone rzeczy, takie jak port itp. Sprawdź również swój użytkownik/hasło, ponieważ mogą one spowodować ten komunikat o błędzie. –

+0

Te referencje działały wcześniej, ale właśnie to robię. Nie boli, aby być dokładnym. Dzięki! – Adrian

+0

Nie pamiętam na pewno, ale myślę, że dostałem ten błąd, gdy przekazywałem dane uwierzytelniające i serwer ich nie wymagał. Możesz spróbować skomentować linię .Credentials i zobaczyć, co się stanie. –

Odpowiedz

6

Ten komunikat o błędzie jest zwykle spowodowane przez jedną z następujących czynności:

  • Nieprawidłowe ustawienia połączeń, takich jak niewłaściwego portu określonego dla zabezpieczone lub niezabezpieczone połączenia
  • nieprawidłowe dane. Zweryfikuję kombinację nazwy użytkownika i hasła, aby upewnić się, że dane logowania są poprawne.
6

myślę, że masz ustawić DeliveryMethod = SmtpDeliveryMethod.Network

ten pracuje obecnie w moim komputerze, po prostu mam sprawdzone, działa ładnie, spróbuj tego

using System.Net; 
using System.Net.Mail; 

var fromAddress = new MailAddress("[email protected]", "From Name"); 
var toAddress = new MailAddress("[email protected]", "To Name"); 
const string fromPassword = "fromPassword"; 
const string subject = "Subject"; 
const string body = "Body"; 

var smtp = new SmtpClient 
      { 
       Host = "smtp.gmail.com", 
       Port = 587, 
       EnableSsl = true, 
       DeliveryMethod = SmtpDeliveryMethod.Network, 
       UseDefaultCredentials = false, 
       Credentials = new NetworkCredential(fromAddress.Address, fromPassword) 
      }; 
using (var message = new MailMessage(fromAddress, toAddress) 
        { 
         Subject = subject, 
         Body = body 
        }) 
{ 
    smtp.Send(message); 
} 
1

Jeśli masz pewność, że nazwa użytkownika i hasło są poprawne, ale nadal występują błędy, oznacza to, że Gmail zablokował Twoją aplikację.

Należy zaznaczyć przycisk radiowy "Włącz" w pozycji the following link relevant to your gmail account. Wtedy wszystko będzie dobrze.