Add (custom) headers to MailMessage class

System.Net.Mail sometimes lacks important email headers like the Message-Id. This post shows you how to add them and improve email delivery from websites.
Published on Wednesday, 23 April 2014

How to add custom headers to System.Net.Mail? When sending an email using the MailMessage class (System.Net.Mail namespace) in an ASP.NET website, certain email headers like Message-ID are not always set. When a Message-ID header is missing, email might be blocked by the recipients SMTP server like Gmail. Therefore it is necessary to set such headers.


Add custom header in MailMessage class / System.Net.Mail Namespace

The System.Net.Mail Namespace allows you to send authenticated SMTP email over TLS. Unfortunately, System.Net.Mail leaves out the mandatory Message-ID header. Here is how you can add this important header to your email. You can set a Message-ID, or any other custom header with the Message.Headers property and .Add method:

Message.Headers.Add( "Message-Id", "<" + Guid.NewGuid().ToString() + "@example.com>" );

Change example.com with your own domain name.

Custom headers
You can use this for other, custom headers as well, for example:

Message.Headers.Add( "X-Instance-ID", Convert.ToString( InstanceID[0] ) );