How to Send email with PHP and SendGrid
Here are a few examples on how to send email with PHP and SendGrid. Also examples on how to use cURL or SMTPAPI headers.
Here are a few examples on how to send email with PHP and SendGrid.
What is SendGrid?
Founded in 2009, after graduating from the TechStars program, SendGrid developed an industry-disrupting, cloud-based email service to solve the challenges of reliably delivering emails on behalf of growing companies. Like many great solutions, SendGrid was born from the frustration of three engineers whose application emails didn’t get delivered, so they built an app for email deliverability. Today, SendGrid is responsible for sending billions of emails for some of the best and brightest companies in the world.
SendGrid’s PHP Library
// using SendGrid's PHP Library // https://github.com/sendgrid/sendgrid-php require 'vendor/autoload.php'; $sendgrid = new SendGrid("SENDGRID_APIKEY"); $email = new SendGrid\Email(); $email->addTo("test@sendgrid.com") ->setFrom("you@youremail.com") ->setSubject("Sending with SendGrid is Fun") ->setHtml("and easy to do anywhere, even with PHP"); $sendgrid->send($email);
SendGrid PHP with cURL
<?php require 'vendor/autoload.php'; Dotenv::load(__DIR__); $sendgrid_apikey = getenv('YOUR_SENDGRID_APIKEY'); $sendgrid = new SendGrid($sendgrid_apikey); $url = 'https://api.sendgrid.com/'; $pass = $sendgrid_apikey; $template_id = '<your_template_id>'; $js = array( 'sub' => array(':name' => array('Elmer')), 'filters' => array('templates' => array('settings' => array('enable' => 1, 'template_id' => $template_id))) ); $params = array( 'to' => "test@example.com", 'toname' => "Example User", 'from' => "you@youremail.com", 'fromname' => "Your Name", 'subject' => "PHP Test", 'text' => "I'm text!", 'html' => "<strong>I'm HTML!</strong>", 'x-smtpapi' => json_encode($js), ); $request = $url.'api/mail.send.json'; // Generate curl request $session = curl_init($request); // Tell PHP not to use SSLv3 (instead opting for TLS) curl_setopt($session, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); curl_setopt($session, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $sendgrid_apikey)); // Tell curl to use HTTP POST curl_setopt ($session, CURLOPT_POST, true); // Tell curl that this is the body of the POST curl_setopt ($session, CURLOPT_POSTFIELDS, $params); // Tell curl not to return headers, but do return the response curl_setopt($session, CURLOPT_HEADER, false); curl_setopt($session, CURLOPT_RETURNTRANSFER, true); // obtain response $response = curl_exec($session); curl_close($session); // print everything out print_r($response); ?>
An Email Sent Using the SMTAPI Header
<?php $url = 'https://api.sendgrid.com/'; $user = 'USERNAME'; $pass = 'PASSWORD'; $json_string = array( 'to' => array( 'example1@sendgrid.com', 'example2@sendgrid.com' ), 'category' => 'test_category' ); $params = array( 'api_user' => $user, 'api_key' => $pass, 'x-smtpapi' => json_encode($json_string), 'to' => 'example3@sendgrid.com', 'subject' => 'testing from curl', 'html' => 'testing body', 'text' => 'testing body', 'from' => 'example@sendgrid.com', ); $request = $url.'api/mail.send.json'; // Generate curl request $session = curl_init($request); // Tell curl to use HTTP POST curl_setopt ($session, CURLOPT_POST, true); // Tell curl that this is the body of the POST curl_setopt ($session, CURLOPT_POSTFIELDS, $params); // Tell curl not to return headers, but do return the response curl_setopt($session, CURLOPT_HEADER, false); // Tell PHP not to use SSLv3 (instead opting for TLS) curl_setopt($session, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); curl_setopt($session, CURLOPT_RETURNTRANSFER, true); // obtain response $response = curl_exec($session); curl_close($session); // print everything out print_r($response); ?>