Sending mail in .Net – just a few tips
Sending mails in .Net is actually very easy. In just a few lines you can send you very first mail automatically:
MailMessage mailMessage = new MailMessage(); mailMessage.To.Add(new MailAddress("myfriend@domain.com")); mailMessage.Subject = "Adrian's blog rocks"; mailMessage.IsBodyHtml = true; mailMessage.Body = "Check out this cool blog"; SmtpClient emailClient = new SmtpClient(); emailClient.Send(mailMessage);
That’s pretty much it! You’ll probably ask about the from email address and the SMTP server. These are configured in Web.config
:
<configuration> ... <system.net> ... <!-- the mail settings used to send emails --> <mailSettings> <smtp deliveryMethod="Network" from="admin@domain.com"> <network host="smtp.domain.com"/> </smtp> <mailSettings> ... </system.net> ... <configuration>
But anyway you can specify them too:
mailMessage.From = new MailAddress("admin@domain.com"); SmtpClient emailClient = new SmtpClient("smtp.domain.com");
Multiple recipients
If you want to send your message to multiple recipients, just use message.To.Add
. So if you have a string with semicolon(;) separated email addresses here’s the code for you:
String emailAddresses = "a.friend@domain.com; another.friend@domain.com"; foreach (String to in emailAddresses.Split(new char[] {';'}, StringSplitOptions.RemoveEmptyEntries)) { mailMessage.To.Add(new MailAddress(to)); }
The same goes for CC, BCC, ReplyTo.
Flag a message
Are you a fan of those follow up message? Let me show you how to send them. The idea is pretty simple: those mail messages have two headers – one for the flag and one for the follow up date. To get/set headers of a mail message just use the Headers
property.
mailMessage.Headers["X-Message-Flag"] = "Follow up"; mailMessage.Headers["Reply-By"] = DateTime.Now.AddDays(1).ToString("ddd, dd MMM yyyy HH:mm:ss %K");
The above will send a message to be followed up one day later from the sending time. The format of the date in the Reply-By
header is specified in RFC822 and if you want to know how to format a date in .Net, see this. If you just want to send your message use what I compiled for you.
The invalid subject error
If you try to set the message subject to a string that contains invalid characters you will get the error System.Net.Mail: The specified string is not in the form required for a subject
. This can be easily fixed with
mailMessage.Subject = Regex.Replace(subject, @"[^ -~]", "");
hi, Adrian
how add reminder with message
I got this site from my pal who informed me on the topic of this web site
and now this time I am visiting this web page and reading very informative articles at this time.