This documentation provides examples for specific use cases. Please open an issue or make a pull request for any use cases you would like us to document here. Thank you!
- Attachments
- Transactional Templates
- How to Setup a Domain Whitelabel
- How to View Email Statistics
- Deploying to Heroku
- Google App Engine Installation
Here is an example of attaching a text file to your email, assuming that text file my_file.txt
is located in the same directory.
<?php
// If you are using Composer (recommended)
require 'vendor/autoload.php';
// If you are not using Composer and downloaded SendGrid's PHP Library
// http://dx.sendgrid.com/downloads/sendgrid-php/sendgrid-php-latest.zip
// require("path/to/sendgrid-php/sendgrid-php.php");
$from = new SendGrid\Email("Example User", "[email protected]");
$subject = "Sending with SendGrid is Fun";
$to = new SendGrid\Email("Example User", "[email protected]");
$content = new SendGrid\Content("text/plain", "and easy to do anywhere, even with PHP");
$file = 'my_file.txt';
$file_encoded = base64_encode(file_get_contents($file));
$attachment = new SendGrid\Attachment();
$attachment->setContent($file_encoded);
$attachment->setType("application/text");
$attachment->setDisposition("attachment");
$attachment->setFilename("my_file.txt");
// OR
$attachment = new SendGrid\Attachment();
$attachment->setContentPath("my_file.txt");
$attachment->setType("application/text");
$attachment->setDisposition("attachment");
$mail = new SendGrid\Mail($from, $subject, $to, $content);
$mail->addAttachment($attachment);
$apiKey = getenv('SENDGRID_API_KEY');
$sg = new \SendGrid($apiKey);
$response = $sg->client->mail()->send()->post($mail);
echo $response->statusCode();
print_r($response->headers());
echo $response->body();
For this example, we assume you have created a transactional template. Following is the template content we used for testing.
Template ID (replace with your own):
13b8f94f-bcae-4ec6-b752-70d6cb59f932
Email Subject:
<%subject%>
Template Body:
<html>
<head>
<title></title>
</head>
<body>
Hello -name-,
<br /><br/>
I'm glad you are trying out the template feature!
<br /><br/>
<%body%>
<br /><br/>
I hope you are having a great day in -city- :)
<br /><br/>
</body>
</html>
<?php
// If you are using Composer (recommended)
require 'vendor/autoload.php';
// If you are not using Composer and downloaded SendGrid's PHP Library
// http://dx.sendgrid.com/downloads/sendgrid-php/sendgrid-php-latest.zip
// require("path/to/sendgrid-php/sendgrid-php.php");
$from = new SendGrid\Email(null, "[email protected]");
$subject = "I'm replacing the subject tag";
$to = new SendGrid\Email(null, "[email protected]");
$content = new SendGrid\Content("text/html", "I'm replacing the <strong>body tag</strong>");
$mail = new SendGrid\Mail($from, $subject, $to, $content);
$mail->personalization[0]->addSubstitution("-name-", "Example User");
$mail->personalization[0]->addSubstitution("-city-", "Denver");
$mail->setTemplateId("13b8f94f-bcae-4ec6-b752-70d6cb59f932");
$apiKey = getenv('SENDGRID_API_KEY');
$sg = new \SendGrid($apiKey);
try {
$response = $sg->client->mail()->send()->post($mail);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
echo $response->statusCode();
print_r($response->headers());
echo $response->body();
<?php
// If you are using Composer (recommended)
require 'vendor/autoload.php';
// If you are not using Composer and downloaded SendGrid's PHP Library
// http://dx.sendgrid.com/downloads/sendgrid-php/sendgrid-php-latest.zip
// require("path/to/sendgrid-php/sendgrid-php.php");
$request_body = json_decode('{
"personalizations": [
{
"to": [
{
"email": "[email protected]"
}
],
"substitutions": {
"-name-": "Example User",
"-city-": "Denver"
},
"subject": "I\'m replacing the subject tag"
}
],
"from": {
"email": "[email protected]"
},
"content": [
{
"type": "text/html",
"value": "I\'m replacing the <strong>body tag</strong>"
}
],
"template_id": "13b8f94f-bcae-4ec6-b752-70d6cb59f932"
}');
$apiKey = getenv('SENDGRID_API_KEY');
$sg = new \SendGrid($apiKey);
try {
$response = $sg->client->mail()->send()->post($request_body);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
echo $response->statusCode();
echo $response->body();
print_r($response->headers());
You can find documentation for how to setup a domain whitelabel via the UI here and via API here.
Find more information about all of SendGrid's whitelabeling related documentation here.
You can find documentation for how to view your email statistics via the UI here and via API here.
Alternatively, we can post events to a URL of your choice via our Event Webhook about events that occur as SendGrid processes your email.
Use the button below to instantly setup your own Simple instance for sending email using sendgrid on Heroku.
Google App Engine installations with composer require creation of file php.ini
in the base folder(the same directory as the app.yaml
file). You can read more about this file here.
The file php.ini
should contain:
google_app_engine.enable_curl_lite = 1