October 27
Quick and Easy: Send Email Using Gmail SMTP Server in .NET C#
This isn’t exactly a new topic, but when I needed to do it, I found a lot of “why won’t this work for me” and not too many direct answers. I hope someone finds this useful.
The following bit of code will send an email using my own gmail account to do it, including attachments:
using System.Net.Mail;
using System.Net; NetworkCredential loginInfo = new NetworkCredential("[My Gmail ID]", "[My Gmail Password]");
MailMessage msg = new MailMessage();
msg.From = new MailAddress("[M Gmail Id]@gmail.com");
msg.To.Add(new MailAddress("paul.galvin@arcovis.com"));
msg.Subject = "Test infopath dev subject";
msg.Body = "<html><body><strong>A strong message.</strong></body></html>";
msg.IsBodyHtml = true;
foreach (string aFile in NIPFD.GetAttachmentNamesAndLocations())
{
msg.Attachments.Add(new Attachment(aFile));
} // Adding attachments.
SmtpClient client = new SmtpClient("smtp.gmail.com");
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = loginInfo;
client.Port = 587;
client.EnableSsl = true;
client.Send(msg); |
A few key bits that slowed me down and other observations / notes:
- The first line that creates the loginInfo object needs to use the gmail ID stripped of “@gmail.com”. So, if my gmail email address is “sharepoint@gmail.com” and my password is “xyzzy” then the line would look like:
NetworkCredential loginInfo = new NetworkCredential("sharepoint", "xyzzy");
- My gmail account is set up to use SSL and that wasn’t a problem.
- There is some conflicting information out there on what port to use. I used port 587 and it worked fine for me.
- In my case, I also needed to send attachments. That NIPFD object has a method that knows where my attachments are. It’s returning a fully path (e.g. “c:\temp\attachment1.jpg”. In my test, I had two attachments and they both worked fine.
I used visual studio 2008 to write this code.
</end>
Subscribe to my blog.
Follow me on Twitter at http://www.twitter.com/pagalvin