2013-09-24 20 views
7

Może to być dla Ciebie bardzo banalne, ale nie mogłem się domyślić, dlaczego pojawia się ten komunikat o błędzie, gdy uruchamiam mój kod. Sprawdziłem niektóre z pytań na tej samej stronie, np. Sending email through Gmail SMTP server with C# , ale żadna z nich nie była pomocna. Czy ktoś chce pomóc? używanie różnych złożeń jest również dopuszczalne. więc jeśli ktoś ma działające rozwiązanie, które byłoby docenione.Błąd podczas wysyłania wiadomości e-mail za pośrednictwem klienta SMTP

Komunikat o błędzie = Serwer SMTP wymaga bezpiecznego połączenia lub klient nie został uwierzytelniony. Odpowiedź serwera: 5.5.1 Wymagane uwierzytelnienie. Dowiedz się więcej na

tutaj jest mój kod

System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();  
message.From = new MailAddress("[email protected]"); 
message.To.Add("[email protected]"); 
message.Subject = "Hello"; 
message.Body = "Hello Bob "; 
message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; 

SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587); 
smtpClient.EnableSsl = true; 
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
smtpClient.UseDefaultCredentials = false; 
smtpClient.Credentials = new NetworkCredential("MyGoogleMailAccount", 
               "mygooglemailpassword"); 

smtpClient.Send(message.From.ToString(), message.To.ToString(), 
       message.Subject, message.Body); 
+1

Od = Hotmail? – Steve

+0

Duplikat http://stackoverflow.com/questions/704636/sending-email-through-gmail-smtp-server-with-c-sharp – Pete

+1

Np. Gmail prawdopodobnie narzeka, jeśli użyjesz hotmaila z adresu. – Pete

Odpowiedz

10

Nie sądzę, nie ma nic złego w kodzie inny niż adresy e-mail. Użyłem tego kodu, aby pomyślnie wysłać wiadomość e-mail z Gmaila na moje osobiste konto (faktycznie uruchomiłem to w LINQPad). Po prostu zastąp wartości trzech ciągów prawidłowymi wartościami dla swoich kont i powinieneś być gotowy:

MailMessage message = new System.Net.Mail.MailMessage(); 
string fromEmail = "[email protected]"; 
string fromPW = "mypw"; 
string toEmail = "[email protected]"; 
message.From = new MailAddress(fromEmail); 
message.To.Add(toEmail); 
message.Subject = "Hello"; 
message.Body = "Hello Bob "; 
message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; 

using(SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587)) 
{ 
    smtpClient.EnableSsl = true; 
    smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
    smtpClient.UseDefaultCredentials = false; 
    smtpClient.Credentials = new NetworkCredential(fromEmail, fromPW); 

    smtpClient.Send(message.From.ToString(), message.To.ToString(), 
        message.Subject, message.Body); 
} 
+0

Witaj, Pete, myślę, że może to być problem z zaporą sieciową lub coś, co można zrobić z moją nazwą użytkownika i hasoglemailem – Sike12

+0

Czy jesteś pewien, że używasz odpowiednie konto i hasło? Myślę, że nie otrzymasz odpowiedzi, jeśli zostałby zablokowany przez zaporę sieciową – Pete

+0

Spróbuj użyć Port 465. – Pete

0

Przez this post.

MailMessage mail = new MailMessage("[email protected]", "[email protected]"); 
SmtpClient client = new SmtpClient(); 
client.Port = 25; 
client.DeliveryMethod = SmtpDeliveryMethod.Network; 
client.UseDefaultCredentials = false; 
client.Host = "smtp.google.com"; 
mail.Subject = "this is a test email."; 
mail.Body = "this is my test email body"; 
client.Send(mail); 
+4

Spowoduje to zgłoszenie komunikatu o błędzie "{" Nie można rozwiązać nazwy zdalnej: "smtp.google.com" "} – Sike12

+0

, jeśli zmienisz ją na smtp.gmail.com (z danymi logowania googlemail)) lub smtp.live.com (z danymi uwierzytelniającymi hotmail), to działałoby dobrze :) – Sike12