2013-09-24 6 views
7

Это может быть очень тривиально для вас, но я просто не мог понять, почему я получаю это сообщение об ошибке при запуске моего кода. Я посмотрел некоторые из относительных вопросов на этом же сайте, например, Sending email through Gmail SMTP server with C# , но ни один из них не был полезен. Кто хочет помочь? с использованием различных сборок. так что если кто-нибудь получит рабочее решение, которое будет оценено по достоинству.Ошибка при отправке электронной почты через SMTP-клиента

Сообщение об ошибке = Для SMTP-сервера требуется защищенное соединение, или клиент не прошел аутентификацию. Ответ сервера: 5.5.1 Требуется аутентификация. Узнайте больше на

вот мой код

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

От = Hotmail? – Steve

+0

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

+1

Кстати, gmail, вероятно, будет жаловаться, если вы используете hotmail с адреса. – Pete

ответ

10

Я не думаю, что нет ничего плохого с кодом, кроме адреса электронной почты. Я использовал этот код для успешной отправки электронной почты из gmail в мою личную учетную запись (фактически ее запускал в LINQPad). Просто замените 3 строковых значения действительными значениями для своих учетных записей, и вы должны быть хорошими:

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

Привет, Пит. Я думаю, это могут быть некоторые проблемы с брандмауэром или что-то общее с моим именем пользователя и паролем googlemail. – Sike12

+0

Вы уверены, что используете правильная учетная запись и пароль? Я бы подумал, что вы не получите ответ, если он был заблокирован брандмауэром. – Pete

+0

Попробуйте вместо этого использовать порт 465. – Pete

0

По 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

Это сообщение сообщит об ошибке «{» Удаленное имя не может быть разрешено: «smtp.google.com» «} – Sike12

+0

, если вы измените его на smtp.gmail.com (с учетными данными googlemail) или smtp.live.com (с учетными данными hotmail), тогда это будет работать нормально :) – Sike12

Смежные вопросы