We’ll start with a simple example using the built-in .NET SMTP libraries to send a message. After that example, you can find more complete instructions that use the SendGrid C# library.
Using .NET’s Built-in SMTP Library
If you are using ASP.NET, you can specify SMTP settings in web.config.
This C# program will build a MIME email and send it through SendGrid. .NET already has built in libraries to send and receive emails.
This example uses:
.NET Mail
The SendGrid library depends on RestSharp. NuGet will handle this dependency automatically, otherwise you will need to add it manually.
Once you have the SendGrid libraries properly referenced in your project, you can include calls to them in your code.
For a sample implementation, check the Example folder.
Use the static SendGrid.GetInstance method to create an email message that is of type SendGrid. Once the message is created, you can use SendGrid properties and methods to set values including the email sender, the email recipient, and the subject and body of the email.
The following example demonstrates how to create an email object and populate it:
// Create the email object first, then add the properties.varmyMessage=SendGrid.GetInstance();// Add the message properties.myMessage.From=newMailAddress("john@example.com");// Add multiple addresses to the To field.List<String>recipients=newList<String>{@"Jeff Smith <jeff@example.com>",@"Anna Lidman <anna@example.com>",@"Peter Saddow <peter@example.com>"};myMessage.AddTo(recipients);myMessage.Subject="Testing the SendGrid Library";//Add the HTML and Text bodiesmyMessage.Html="<p>Hello World!</p>";myMessage.Text="Hello World plain text!";
How to: Send an Email
After creating an email message, you can send it using either SMTP or the Web API provided by SendGrid. For details about the benefits and drawbacks of each API, see SMTP vs. Web API in the SendGrid documentation.
Sending email with either protocol requires that you supply your SendGrid account credentials (username and password). The following code demonstrates how to wrap your credentials in a NetworkCredential object:
// Create network credentials to access your SendGrid account.varusername="your_sendgrid_username";varpswd="your_sendgrid_password";varcredentials=newNetworkCredential(username,pswd);
To send an email message, use the Deliver method on either the SMTP class, which uses the SMTP protocol, or the Web transport class, which calls the SendGrid Web API. The following examples show how to send a message using both SMTP and the Web API.
// Create the email object first, then add the properties.SendGridmyMessage=SendGrid.GetInstance();myMessage.AddTo("anna@example.com");myMessage.From=newMailAddress("john@example.com","John Smith");myMessage.Subject="Testing the SendGrid Library";myMessage.Text="Hello World!";// Create credentials, specifying your user name and password.varcredentials=newNetworkCredential("username","password");// Create an SMTP transport for sending email.vartransportSMTP=SMTP.GetInstance(credentials);// Send the email.transportSMTP.Deliver(myMessage);
// Create the email object first, then add the properties.SendGridmyMessage=SendGrid.GenerateInstance();myMessage.AddTo("anna@example.com");myMessage.From=newMailAddress("john@example.com","John Smith");myMessage.Subject="Testing the SendGrid Library";myMessage.Text="Hello World!";// Create credentials, specifying your user name and password.varcredentials=newNetworkCredential("username","password");// Create a Web transport for sending email.vartransportWeb=Web.GetInstance(credentials);// Send the email.transportWeb.Deliver(myMessage);
Adding Recipients to the X-SMTPAPI Header
If you want to use the X-SMTPAPI header to specify recipients so that
each recipient gets an individually message without the other recipients
being shown, use the message.Header.AddTo() method as shown below:
varrecipients=newList<string>();//You could loop through your dataset here and add each recipient, up to 1000 recipients per messagerecipients.Add("Brandon <brandon@example.com>");recipients.Add("Steve <steve@example.com>");//We want to add the recipients to the X-SMTPAPI headermyMessage.Header.AddTo(recipients);//Even though we added recipients to the Header, the envelope must also have a valid recipientmyMessage.AddTo("brandon@example.com");
How to: Add an Attachment
Attachments can be added to a message by calling the AddAttachment method and specifying the name and path of the file you want to attach, or by passing a stream. You can include multiple attachments by calling this method once for each file you wish to attach. The following example demonstrates adding an attachment to a message:
SendGridmyMessage=SendGrid.GenerateInstance();myMessage.AddTo("anna@example.com");myMessage.From=newMailAddress("john@example.com","John Smith");myMessage.Subject="Testing the SendGrid Library";myMessage.Text="Hello World!";myMessage.AddAttachment(@"C:\file1.txt");
How to: Use filters to enable footers, tracking, and analytics
SendGrid provides additional email functionality through the use of filters. These are settings that can be added to an email message to enable specific functionality such as click tracking, Google analytics, subscription tracking, and so on. For a full list of filters, see Filter Settings.
Filters can be applied to SendGrid email messages using methods implemented as part of the SendGrid class. Before you can enable filters on an email message, you must first initialize the list of available filters by calling the InitializeFilters method.
The following examples demonstrate the footer and click tracking filters:
// Create the email object first, then add the properties.SendGridmyMessage=SendGrid.GetInstance();myMessage.AddTo("anna@example.com");myMessage.From=newMailAddress("john@example.com","John Smith");myMessage.Subject="Testing the SendGrid Library";myMessage.Text="Hello World!";myMessage.InitializeFilters();// Add a footer to the message.myMessage.EnableFooter("PLAIN TEXT FOOTER","<p><em>HTML FOOTER</em></p>");
// Create the email object first, then add the properties.SendGridmyMessage=SendGrid.GetInstance();myMessage.AddTo("anna@example.com");myMessage.From=newMailAddress("john@example.com","John Smith");myMessage.Subject="Testing the SendGrid Library";myMessage.Html="<p><a href=\"http://www.example.com\">Hello World Link!</a></p>";myMessage.Text="Hello World!";myMessage.InitializeFilters();// true indicates that links in plain text portions of the email // should also be overwritten for link tracking purposes. myMessage.EnableClickTracking(true);