Скорее всего, вы на самом деле получаете эту ошибку, ее просто подавляют, когда вы находитесь в консольном приложении.
Для SMTP-сервера требуется защищенное соединение, или клиент не прошел аутентификацию. Ответ сервера: 5.5.1 Требуется аутентификация.
Изменить этот код и добавить одну дополнительную строку. Очень важно, чтобы он проходил перед учетными данными.
smtp.Host = "smtp.gmail.com"; //Or Your SMTP Server Address
// ** HERE! **
smtp.UseDefaultCredentials = false;
// ***********
smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "[email protected]"); // ***use valid credentials***
smtp.Port = 587;
Вам также необходимо перейти сюда и включить менее безопасные приложения.
https://www.google.com/settings/security/lesssecureapps
Или, если у вас есть два шага аутентификации на вашем счете вам необходимо установить приложение специальный пароль, а затем использовать этот пароль в коде вместо основного пароля учетной записи.
Я только что проверил и проверил, что это работает в моей учетной записи с двумя шагами. Черт, вот мой весь метод, скопированный прямо из LINQPad, если он поможет (с удаленной детализацией, конечно).
var fromAddress = new MailAddress("[email protected]", "My Name");
var toAddress = new MailAddress("[email protected]", "Mr Test");
const string fromPassword = "tbhagpfpcxwhkczd";
const string subject = "test";
const string body = "HEY, LISTEN!";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
Edit:
Использование вложения:
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
Attachment attachment = new Attachment(filePath);
message.Attachments.Add(attachment);
smtp.Send(message);
}
Можете ли вы отправить сообщение целиком исключение. Кроме того, в настройках безопасности gmail разрешите менее безопасные приложения. – user1666620
Если я правильно помню, GMail поддерживает только SMTPS-доступ. –
Я включил ** менее безопасные приложения. ** Его работа так благодарит вас. –