Hands-On Guide: Sending Emails Using SendGrid and Python

Here’s a highly detailed, beginner-friendly guide for non-technical readers, complete with line-by-line script explanations, module installation instructions, and other foundational steps.

Hands-On Guide: Sending Emails Using SendGrid and Python
Photo by Thanhy Nguyen / Unsplash

Do you want to send emails using Python, but you're not a technical wizard? Don't worry! In this step-by-step guide, we’ll take you through the process of setting up your Python environment, installing necessary modules, and using a script to send emails with SendGrid.

This guide builds upon our previous tutorial, "The Journey to Mastering Email Notifications with SendGrid." If you haven’t already created a SendGrid account or completed the setup, we recommend starting there to ensure a smooth experience as we dive into the technical details of using Python to send emails.

This guide is designed for non-technical users, so we’ll explain everything in plain language, with visuals and detailed instructions.

1. What You’ll Achieve

By the end of this guide, you will:

  • Have Python installed on your computer.
  • Be able to send emails programmatically with a Python script.
  • Understand each line of the script so you can adapt it for your needs.

2. What You’ll Need

Here’s what you need to get started:

  1. A computer (Windows, macOS, or Linux).
  2. A free SendGrid account (create one here).
  3. Python installed (don’t worry, we’ll cover this).
  4. Internet access.

3. Step-by-Step Setup

Step 1: Install Python

Python is the programming language we’ll use.

On Windows:

  1. Go to Python’s official website.
  2. Download the latest version for Windows.
  3. Run the installer.
  4. During installation, check the box labeled Add Python to PATH (important!).
  5. Finish the installation and restart your computer if prompted.

On macOS/Linux:

Python usually comes pre-installed. Check by running this command in the terminal:

python3 --version  

If it’s not installed, download it from python.org.

Step 2: Set Up Your Environment

We recommend creating a dedicated folder for this project.

  1. Create a folder named sendgrid_project on your computer.

Open a terminal (or Command Prompt) and navigate to the folder:

cd path/to/sendgrid_project  

Step 3: Install Required Python Modules

Python uses modules to add functionality. We need sendgrid to connect with SendGrid.

  1. Open your terminal or Command Prompt.

Run the following command to install the sendgrid module:

pip install sendgrid  

You’ve now installed the magic tool that helps Python communicate with SendGrid.

4. The Python Script: Explained Line by Line

Here’s the full Python script for sending emails:

import os  
from sendgrid import SendGridAPIClient  
from sendgrid.helpers.mail import Mail  

# 1. Email details  
message = Mail(  
    from_email='you@yourdomain.com',  # Sender's email address  
    to_emails='recipient@example.com',  # Receiver's email address  
    subject='Welcome to My Application',  # Email subject  
    html_content='<p>This is a test email. Welcome!</p>'  # Email body (HTML format)  
)  

# 2. Send the email  
try:  
    sg = SendGridAPIClient(os.getenv('SENDGRID_API_KEY'))  # Use the API key from environment variables  
    response = sg.send(message)  # Send the email  
    print(f"Email sent! Status code: {response.status_code}")  # Success message  
except Exception as e:  
    print(f"An error occurred: {e}")  # Handle errors  

What Does Each Line Do?

Import Statements

import os  
from sendgrid import SendGridAPIClient  
from sendgrid.helpers.mail import Mail  
  • os: Lets Python interact with your computer, like accessing environment variables.
  • sendgrid: The main tool to connect with SendGrid.
  • Mail: Helps format and send the email.

Email Details

message = Mail(  
    from_email='you@yourdomain.com',  
    to_emails='recipient@example.com',  
    subject='Welcome to My Application',  
    html_content='<p>This is a test email. Welcome!</p>'  
)  
  • from_email: Your verified email address on SendGrid.
  • to_emails: The recipient’s email address.
  • subject: The subject line of your email.
  • html_content: The email body, which can include HTML for formatting.

Sending the Email

sg = SendGridAPIClient(os.getenv('SENDGRID_API_KEY'))  
response = sg.send(message)  
  • SendGridAPIClient: Authenticates your connection using the API key.
  • sg.send(message): Sends the email using the details you defined.

Handling Errors

except Exception as e:  
    print(f"An error occurred: {e}")  

If something goes wrong (e.g., incorrect API key), this block shows the error message.

5. How to Run the Script

  1. Save the script as send_email.py in your sendgrid_project folder.
  2. Set your SendGrid API key as an environment variable:

On Windows:

set SENDGRID_API_KEY=your_api_key_here  

On macOS/Linux:

export SENDGRID_API_KEY=your_api_key_here  
  1. Run the script:
python send_email.py  

6. What to Expect

When the script runs successfully, you’ll see a confirmation message like:

Email sent! Status code: 202  

Check your inbox to see the email you sent!

7. Troubleshooting Tips

  • Error: No module named 'sendgrid'
    Run pip install sendgrid again.
  • Invalid API Key
    Double-check your API key and environment variable.
  • Email Not Received
    Check spam/junk folders and verify your domain on SendGrid.

Conclusion

Congratulations! You’ve set up Python and SendGrid to send emails, and you understand how the script works. You’re now equipped to explore more advanced features like:

  • Personalizing emails for different users.
  • Attaching files to your emails.
  • Automating bulk email campaigns.

Stay tuned for more guides to enhance your skills and take your projects to the next level.

Read next