lukencode / FluentEmail

All in one email sender for .NET. Supports popular senders (SendGrid, MailGun, etc) and Razor templates.
https://lukelowrey.com/dotnet-email-guide-2021/
MIT License
3.04k stars 438 forks source link

The server committed a protocol violation The server response was: #341

Open mostafavb opened 2 years ago

mostafavb commented 2 years ago

I am using FluentEmail in Asp.Net project on .netframework 4.8, when I want to use SendAsync method I get this error:

"The server committed a protocol violation The server response was: "

there is nothing anymore to give more information about this error.

` SmtpSender smtpSender =

        new SmtpSender(() => new System.Net.Mail.SmtpClient("smtp.office365.com")
        {
            EnableSsl = true,
            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
            Port = 587,
            Credentials = new System.Net.NetworkCredential("mvazini@tyt.com", "00X-0")
        });

        Email.DefaultSender = smtpSender;
        var email = Email
            .From("mvazini@tyt.com", "Customer Care")
            .To(toAddresses)               
            .Subject(subject)
            .UsingTemplate(body, new { });           
        try
        {
            var sendedEmail = await email.SendAsync();
            return sendedEmail.Successful;
        }
        catch (Exception ex)
        {
            LogManager.InsertLog(LogTypeEnum.SystemError, "Error sending e-mail for order notification." + ex.Message, ex);
            return false;
        }

`

Screenshot 2022-09-21 085808

carlin010 commented 1 year ago

@mostafavb you could try using FluentEmail.MailKit instead of FluentEmail.Smtp.

FluentEmail.MailKit is the current recommendation from Microsoft and was the only method of getting SMTP over port 587 working. In my case, it seemed like FluentEmail.Smtp could not properly negotiate which SSL / TLS encryption should be used for the connection and caused the same error you are seeing.