The SMTP method in ACS only confirms that the email was accepted it doesn’t guarantee delivery. If the recipient’s server silently blocks or delays the email (due to missing SPF/DKIM, spam filters, or IP reputation), ACS keeps showing OutForDelivery
without further updates. Also, Microsoft might have changed backend behavior recently, which can impact SMTP reliability even if your code hasn’t changed.
var client = new EmailClient(new Uri("<your-acs-resource-endpoint>"), new AzureKeyCredential("<your-access-key>"));
var message = new EmailMessage(
"<from-email-address>",
new EmailRecipients(new List<EmailAddress> { new EmailAddress("<to-email-address>") }),
"Subject goes here",
new EmailContent("Body of the email"));
await client.SendAsync(WaitUntil.Completed, message);
This call will give immediate and more meaningful feedback, so you can see exactly why something fails.
NOTE: It’s not that ACS is broken, the issue is that SMTP provides very limited feedback and is prone to silent failures. In contrast, the API-based method using the EmailClient
SDK is more reliable, offers better diagnostics, and is the recommended approach moving forward.