How to configure MailKit without password

Viewed 38

In ASP.NET Core 6 Web API, I am using MailKit for Email configuration. I am using the SMTP server of my company which doesn't need a password.

I have this:

public class MailSettings
{
    public string SmtpServer { get; set; }
    public string SenderName { get; set; }
    public string SenderEmail { get; set; }
    public int SmtpPort { get; set; }
}

Since I am using my company SMTP configuration that needs no password, I use this method to send mails:

public async Task<bool> SendEmailAsync(MailRequest mailRequest)
{
    var email = new MimeMessage { Sender = MailboxAddress.Parse(_mailSettings.SenderEmail) };
    email.To.Add(MailboxAddress.Parse(mailRequest.ToEmail));
    email.Subject = mailRequest.Subject;

    var builder = new BodyBuilder();

    if (mailRequest.Attachments != null)
    {
        foreach (var file in mailRequest.Attachments.Where(file => file.Length > 0))
        {
            byte[] fileBytes;

            await using (var ms = new MemoryStream())
            {
                file.CopyTo(ms);
                fileBytes = ms.ToArray();
            }

            builder.Attachments.Add((file.FileName + Guid.NewGuid().ToString()), fileBytes, ContentType.Parse(file.ContentType));
        }
    }

    builder.HtmlBody = mailRequest.Body;
    email.Body = builder.ToMessageBody();

    try
    {
        using var smtp = new SmtpClient();

        smtp.Connect(_mailSettings.SmtpServer, _mailSettings.SmtpPort, SecureSocketOptions.StartTls);
        smtp.Authenticate(_mailSettings.SenderEmail);

        await smtp.SendAsync(email);

        smtp.Disconnect(true);

        return true;
    }
    catch (Exception e)
    {
        _logger.Error(e, e.Source, e.InnerException, e.Message, e.ToString());
        return false;
    }
}

I got this error:

Argument 1: cannot convert from 'string' to 'MailKit.Security.SaslMechanism'

and it highlights this line of code:

smtp.Authenticate(_mailSettings.SenderEmail);

Expecting me to do it this way:

smtp.Authenticate(_mailSettings.SenderEmail, _mailSettings.Password);

How do I resolve this without password?

Thanks

0 Answers
Related