2016-12-27 6 views
0

Я работаю в ASP.Net Core и пытаюсь отправить электронную почту с помощью smtp-клиента из gmail. Есть следующий код, но он не работает Увидели следующий пост, но он не работает http://dotnetthoughts.net/how-to-send-emails-from-aspnet-core/Отправить письмо с помощью SMTP через gmail

Это thorws следующая ошибка

System.NotSupportedException: Сервер SMTP не поддерживает аутентификацию

var emailMessage = new MimeMessage(); 
emailMessage.From.Add(new MailboxAddress("From Name", "[email protected]")); 
emailMessage.To.Add(new MailboxAddress("To Name", "[email protected]")); 
emailMessage.Subject = subject; 

var bodyBuilder = new BodyBuilder(); 
bodyBuilder.HtmlBody = message; 
emailMessage.Body = bodyBuilder.ToMessageBody(); 

var client = new SmtpClient(); 
try 
{ 
    await client.ConnectAsync("smtp.gmail.com", 25, SecureSocketOptions.None).ConfigureAwait(false); 
    client.AuthenticationMechanisms.Remove("XOAUTH2"); 
    await client.AuthenticateAsync("[email protected]", "fromPassword"); //error occurs here 

    await client.SendAsync(emailMessage).ConfigureAwait(false); 
    await client.DisconnectAsync(true); 
    await client.DisconnectAsync(true).ConfigureAwait(false); 
} 
catch(Exception e) 
{ 

} 
+3

Почему вы используете порт 25, когда в примере показан порт 587? – mason

+0

Точка @mason правильная. Мы можем использовать идентификатор порта 587 или 465. В gmail smtp !. Я не знаю, почему вы используете 25. – RajeeshMenoth

ответ

0

Забрасывается NotSupportedException, поскольку GMail не поддерживает аутентификацию без использования соединения SSL/TLS, поскольку оно поддерживает только нешифрованные механизмы аутентификации на основе паролей.

Я бы рекомендовал подключения, как это:

client.ConnectAsync("smtp.gmail.com", 587, SecureSocketOptions.StartTls) 

Надежда, что помогает.