The sendgrid Package
The sendgrid
package provides some useful emailing capabilities via the SendGrid Email Delivery Service. :mailbox_with_mail: :envelope:
Reference:
Thanks to former student @mgallea for discovering the email template capabilities
Installation
From within an active virtual environment, install the sendgrid
package:
NOTE: we'll want to make sure the installed version is greater than 6.0.5, because earlier versions of this package worked differently, and the code examples in this document only apply to the newer versions.
Setup
First, sign up for a SendGrid account, then follow the instructions to complete your "Single Sender Verification", clicking the link in a confirmation email to verify your account.
Then create a SendGrid API Key with "full access" permissions. We'll want to store the API Key value in an environment variable called SENDGRID_API_KEY
.
Also set an environment variable called SENDER_ADDRESS
to be the same email address as the single sender address you just associated with your SendGrid account (e.g. "abc123@gmail.com").
Use a ".env" file approach to managing these environment variables.
Usage
Send yourself an email:
NOTE: if you see a status code of 202, it means the message was sent successfully
Check your inbox:
NOTE: this message might take a minute to send, and it might be in your spam folder to start
Compiling HTML Content
For the mail object's html_content
parameter, we can use a simple string like the example above, or we can start to use some HTML content:
... or we can even compile an entire HTML document into a single string:
Email Templates
An alternative way to compile the email content is to use a "dynamic email template" whereby we'll specify some common HTML structure that will apply to all emails, and pass specific data to populate the template for each specific email. Let's try sending a simple receipt via template.
Navigate to https://sendgrid.com/dynamic_templates and press the "Create Template" button on the top right. Give it a name like "example-receipt", and click "Save". At this time, you should see your template's unique identifier (e.g. "d-b902ae61c68f40dbbd1103187a9736f0"). Copy this value and store it in an environment variable called SENDGRID_TEMPLATE_ID
.
Back in the SendGrid platform, click "Add Version" to create a new version of a "Blank Template" and select the "Code Editor" as your desired editing mechanism.
At this point you should be able to paste the following HTML into the "Code" tab, and the corresponding example data in the "Test Data" tab, and save each after you're done editing them.
Example "Code" template which will specify the structure of all emails:
NOTE: the "handlebars" syntax above is like HTML, but allows us to construct HTML dynamically based on some data (in this case it wants us to pass it
human_friendly_timestamp
,products
, andtotal_price_usd
variables)
Example "Test Data" which will populate the template:
NOTE: when we send real emails using this template, we'll pass dynamic data with different values, but it should resemble this test data structure.
Finally, configure the template's subject by clicking on "Settings" in the left sidebar. Choose an email subject like "Your Receipt from the Green Grocery Store". Then click "Save Template".
After configuring and saving the email template, we should be able to use it to send an email:
Last updated