2015-08-07 3 views
0

Я вижу много сообщений на SMTPClient, но я все еще застрял. Я создаю приложение C# Console с таргетингом на платформу .NET 4.0 и работаю на Datacenter (сервер) Windows 2008 R2.SmtpClient не может подключиться к Gmail, используя SSL

Я хочу отправить электронное письмо с использованием SSL из только что созданной учетной записи gmail.

Если я использую порт 587, я получаю исключение:

Сервер SMTP требует безопасного соединения или клиент не был аутентифицирован

Если я использую порт 465, я получаю еще один :

Невозможно прочитать данные из транспортного соединения: операция блокировки была прервана вызовом WSACancelBlockingCall.

Я понимаю, что этот вопрос задавался несколько раз в прошлом. Все ответы, которые я вижу, относятся к порядку, в котором установлен UseDefaultCredentials. Он должен быть установлен в falseДО действительные учетные данные установлены. Я следовал этому совету (согласно приведенному ниже коду), и все же я все еще получаю сбой.

Другие ответы включают в себя коммутационные порты от 465 до 587 ..., которые я пробовал, и просто приводит к другой ошибке (как указано выше).

Вот мой код:

NetworkCredential credentials = new NetworkCredential("[email protected]", "2-step-auth-Password"); 
MailAddress address = new MailAddress("[email protected]"); 

SmtpClient client = new SmtpClient("smtp.gmail.com", 465); // or 587 
client.DeliveryMethod = SmtpDeliveryMethod.Network; 
client.UseDefaultCredentials = false; 
client.EnableSsl = true; 
client.Credentials = credentials; 
client.Timeout = 10000; // 10 seconds. 
client.Host = "smtp.gmail.com"; 
//client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback); 

MailMessage message = new MailMessage("[email protected]", recipients); 
message.Subject = "Hello"; 
message.Body = "Goodbye"; 
message.BodyEncoding = Encoding.UTF8; 
try 
{ 
    client.Send(message); 
} 
catch (Exception ex) 
{ 
    Console.WriteLine("Exception caught in CreateTestMessage2(): {0}", ex.ToString()); 
} 
message.Dispose(); 

Update 2: Я вижу еще один ответ, который может быть моим вопросом: Gmail требует пароля для приложения (которое, по-видимому, не доступно с моим текущим счетом GMAIL нет. конечно, почему еще). но это может быть моей проблемой.

Обновление 3: Я выполнил все инструкции. Сгенерированная двухэтапная аутентификация с Gmail и все еще не выполняется.

+0

возможно дубликат [Невозможно авторизовать из к SMTP Gmail через MailMessage & SmtpClient] (http://stackoverflow.com/questions/9104645/ cant-auth-to-gmail-smtp-via-mailmessage-smtpclient) – gunwin

+0

http://stackoverflow.com/questions/20906077/gmail-error-the-smtp-server-requires-a-secure-connection-or-the -client-was-not –

+0

Не нужны ли ваши учетные данные из учетной записи gmail? –

ответ

1

Ниже код работает для меня, вы можете попробовать это:

SmtpClient smtp = new SmtpClient("smtp.office365.com"); 

//Your Port gets set to what you found in the "POP, IMAP, and SMTP access" section from Web Outlook 
smtp.Port = 587; 
//Set EnableSsl to true so you can connect via TLS 
smtp.EnableSsl = true; 

System.Net.NetworkCredential cred = new System.Net.NetworkCredential("Username", "Password"); 

smtp.Credentials = cred; 

MailMessage mail = new MailMessage(); 

mail.From = new MailAddress("Sender Email Address", "Sender Name"); 

StringBuilder mailBody = new StringBuilder(); 

mail.To.Add("ToEmailAddress"); 

mail.Subject = "Subject"; 
mail.IsBodyHtml = true; 
mail.Body = "Body Text"; 

try 
{ 
    smtp.Send(mail); 
} 
catch (Exception ex) 
{ 

} 
+0

сделал этот код работа? –

+0

Это работает. Я сравнил его с моим ответом и, похоже, тот же. Мое решение теперь работает. Я ненавижу, когда это происходит. Это похоже на тостер, который работает только с человеком, которого вы хотите показать, что он сломан. СПАСИБО ЗА ВАШ ОТВЕТ!! –

+0

без проблем Ed .. –