Использование MailKit для отправки через Outlook.com - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь отправить электронное письмо через мой почтовый адрес Outlook.com с помощью MailKit.

Я следовал всем примерам, которые видел в Интернете, и вот что у меня есть:

public async Task SendEmailAsync(string email, string subject, string htmlmessage)
{
    var message = new MimeMessage();
    message.From.Add(new MailboxAddress("Service Account", "me@outlook.com"));
    message.To.Add(new MailboxAddress("First Last", email));
    message.Subject = subject;
    message.Body = new TextPart(TextFormat.Html)
    {
        Text = htmlMessage
    };

    using (var client = new SmtpClient())
    {
        //Have tried both false and true    
        client.Connect("smtp-mail.outlook.com", 587, false);
        client.AuthenticationMechanisms.Remove("XOAUTH2");
        client.Authenticate("me@outlook.com", "mypassword");
        await client.SendAsync(message);
        client.Disconnect(true);
    }

    return;
}

Если установить для параметра useSSL значение true для client.Connect(), я получу эту ошибку:

An error occurred while attempting to establish an SSL or TLS connection

Если установить для параметра useSSL значение false, яполучить эту ошибку:

AuthenticationException: AuthenticationInvalidCredentials: 5.7.3 Authentication unsuccessful

Что я делаю не так?

Обновление

Добавлено ProtocolLogger по предложению @jstedfast и здесьбыл результат:

Connected to smtp://smtp-mail.outlook.com:587/?starttls=when-available
S: 220 BN6PR11CA0009.outlook.office365.com Microsoft ESMTP MAIL Service ready at Sun, 10 Feb 2019 03:26:30 +0000
C: EHLO [192.168.1.12]
S: 250-BN6PR11CA0009.outlook.office365.com Hello [73.175.143.94]
S: 250-SIZE 157286400
S: 250-PIPELINING
S: 250-DSN
S: 250-ENHANCEDSTATUSCODES
S: 250-STARTTLS
S: 250-8BITMIME
S: 250-BINARYMIME
S: 250-CHUNKING
S: 250 SMTPUTF8
C: STARTTLS
S: 220 2.0.0 SMTP server ready
C: EHLO [192.168.1.12]
S: 250-BN6PR11CA0009.outlook.office365.com Hello [73.175.143.94]
S: 250-SIZE 157286400
S: 250-PIPELINING
S: 250-DSN
S: 250-ENHANCEDSTATUSCODES
S: 250-AUTH LOGIN XOAUTH2
S: 250-8BITMIME
S: 250-BINARYMIME
S: 250-CHUNKING
S: 250 SMTPUTF8
C: AUTH LOGIN
S: 334 ************
C: ****************
S: 334 ************
C: ****************
S: 535 5.7.3 Authentication unsuccessful [BN6PR11CA0009.namprd11.prod.outlook.com]

Кстати, я прокомментировал некоторые вещи с помощью *.Я не был уверен, что это было, и было ли это чувствительным или нет.

Ответы [ 3 ]

0 голосов
/ 10 февраля 2019

Ошибка AuthenticationException означает, что сервер отклоняет ваше имя пользователя и / или пароль.

Возможно, имя пользователя должно быть me вместо me@outlook.com?

Попробуйте получитьпротокол протокола и выяснение, какой тип механизма аутентификации используется.

https://github.com/jstedfast/MailKit/blob/master/FAQ.md#ProtocolLog

0 голосов
/ 11 февраля 2019

Похоже, что сам код работает.Однако имейте в виду, что если вы настроили учетную запись для 2FA, вы получите сообщение об ошибке выше, которое указывает, что ваши учетные данные недействительны.Обязательно отключите 2FA!

0 голосов
/ 09 февраля 2019

попробуйте следующим образом:

client.Connect("smtp-mail.outlook.com", 587);
client.UseDefaultCredentials = false;    
client.Credentials = new System.Net.NetworkCredential(From, Password);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.EnableSsl = true;

Вы также можете попробовать client.ConnectType = SmtpConnectType.ConnectSSLAuto;


Для MailKit

client.Connect("smtp-mail.outlook.com", 587, SecureSocketOptions.StartTls);
client.Authenticate("me@outlook.com", "mypassword");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...