SendGrid's cloud-based email infrastructure relieves businesses of the cost and complexity of maintaining custom email systems. SendGrid provides reliable delivery, scalability and real-time analytics along with flexible APIs that make custom integration a breeze.
The SendGrid plugin uses SMTP or API integration to send outgoing emails from your WordPress installation. It replaces the wp_mail function included with WordPress.
First, you need to have PHP-curl extension enabled. To send emails through SMTP you need to install also the 'Swift Mailer' plugin.
To have the SendGrid plugin running after you have activated it, go to the plugin's settings page and set the SendGrid credentials, and how your email will be sent - either through SMTP or API.
You can also set default values for the "Name", "Sending Address" and the "Reply Address", so that you don't need to set these headers every time you want to send an email from your application.
Emails are tracked and automatically tagged for statistics within the SendGrid Dashboard. You can also add general tags to every email sent, as well as particular tags based on selected emails defined by your requirements.
There are a couple levels of integration between your WordPress installation and the SendGrid plugin:
- The simplest option is to Install it, Configure it, and the SendGrid plugin for WordPress will start sending your emails through SendGrid.
- We amended wp_mail() function so all email sends from WordPress should go through SendGrid. The wp_mail function is sending text emails as default, but you have an option of sending an email with HTML content.
How to use wp_mail()
function:
We amended wp_mail()
function so all email sends from WordPress should go through SendGrid.
You can send emails using the following function: wp_mail($to, $subject, $message, $headers = '', $attachments = array())
Where:
$to
- Array or comma-separated list of email addresses to send message.$subject
- Email subject$message
- Message contents$headers
- Array or "\n" separated list of additional headers. Optional.$attachments
- Array or "\n"/"," separated list of files to attach. Optional.
The wp_mail function is sending text emails as default. If you want to send an email with HTML content you have to set the content type to 'text/html' running add_filter('wp_mail_content_type', 'set_html_content_type');
function before to wp_mail()
one.
After wp_mail function you need to run the remove_filter('wp_mail_content_type', 'set_html_content_type');
to remove the 'text/html' filter to avoid conflicts --http://core.trac.wordpress.org/ticket/23578
Example about how to send an HTML email using different headers:
$subject = 'test plugin';
$message = 'testing WordPress plugin';
$to = 'address1@sendgrid.com, Address2 <address2@sendgrid.com@>, address3@sendgrid.com';
or
$to = array('address1@sendgrid.com', 'Address2 <address2@sendgrid.com>', 'address3@sendgrid.com');
$headers = array();
$headers[] = 'From: Me Myself <me@example.net>';
$headers[] = 'Cc: address4@sendgrid.com';
$headers[] = 'Bcc: address5@sendgrid.com';
$headers[] = 'unique-args:customer=mycustomer;location=mylocation'
$attachments = array('/tmp/img1.jpg', '/tmp/img2.jpg');
add_filter('wp_mail_content_type', 'set_html_content_type');
$mail = wp_mail($to, $subject, $message, $headers, $attachments);
remove_filter('wp_mail_content_type', 'set_html_content_type');