Home > Software design >  Why is SmtpClient Send mail failing with exceptions in Asp.Net application?
Why is SmtpClient Send mail failing with exceptions in Asp.Net application?

Time:05-04

I am trying to send an email via SmtpClient ("smtp.office365.com") and am running into issues.

Consider the following code snippet:

var fromAddress = new MailAddress("[email protected]", "TestFrom");
var toAddress = new MailAddress("[email protected]", "TestSend");
string fromPassword = "SomePassword";

var smtp = new SmtpClient
{
    Host = "smtp.office365.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};

using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = "Hey There Did this Test Work?",
    Body = "Hey There Did this Test Work?",
    IsBodyHtml = true,
})

smtp.Send(message);

This code works correctly from a .Net console application. I can also use the same credentials and send an email via PowerShell.

When I attempt to use the same code snippet in an Asp.Net application, it fails. I've tried this with the application deployed locally and to Azure. I get the same results.

I get the following exceptions:

Failure sending mail. Unable to read data from the transport connection: net_io_connectionclosed.

I am told that used to work correctly at some point previous to the past 3 months. Am I doing something wrong here? Are there additional configuration settings I should be using? Does Asp.Net require something to bet set up (locally and within Azure) in order for this to work?

Thx

CodePudding user response:

We had similar issues sending emails and it turned out that it was because we weren't enforcing TLS 1.2. You can enforce it with following code:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

You only need call it once in your application, so Application_Start callback in global.asax is one possible place to put it.

  • Related