Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using MailKit to send through Outlook.com

I'm trying to send an email through my Outlook.com email address using MailKit.

I've followed all the examples I've seen online and this is what I have:

public async Task SendEmailAsync(string email, string subject, string htmlmessage)
{
    var message = new MimeMessage();
    message.From.Add(new MailboxAddress("Service Account", "[email protected]"));
    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("[email protected]", "mypassword");
        await client.SendAsync(message);
        client.Disconnect(true);
    }

    return;
}

If I set the useSSL parameter to true on client.Connect(), I get this error:

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

If I set the useSSL parameter to false, I get this error:

AuthenticationException: AuthenticationInvalidCredentials: 5.7.3 Authentication unsuccessful

What am I doing wrong?

Update

Added ProtocolLogger per the suggestion of @jstedfast and here was the result:

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]

BTW, I commented out some stuff with *. I wasn't sure what that was and if it was sensitive or not.

like image 265
RHarris Avatar asked Oct 17 '22 07:10

RHarris


2 Answers

It appears as though the code itself works. However, be aware that if you've set your account to require 2FA, you will get the error message above that indicates that your credentials are invalid. Be sure to disable 2FA!

like image 184
RHarris Avatar answered Oct 21 '22 08:10

RHarris


If the problem you're facing is because of 2FA (2-factor Authentication) you should go to your Microsoft settings, in advanced settings you could request an "app password" once you receive it, you should use it instead of your email's password, worked for me.

like image 30
Johnny Am Avatar answered Oct 21 '22 07:10

Johnny Am