Skip to content
mail

GitHub Action

SendGrid Action

v1.0.1 Latest version

SendGrid Action

mail

SendGrid Action

Send email with SendGrid

Installation

Copy and paste the following snippet into your .yml file.

              

- name: SendGrid Action

uses: peter-evans/sendgrid-action@v1.0.1

Learn more about this action in peter-evans/sendgrid-action

Choose a version

SendGrid Action

GitHub Marketplace

A GitHub Action to send email with SendGrid.

The action executes a Node.js script allowing you to customise sending email with the Node.js API Library.

Usage

    - name: SendGrid
      uses: peter-evans/sendgrid-action@v1
      env:
        SENDGRID_API_KEY: ${{ secrets.SENDGRID_API_KEY }}

Secrets

Set your SendGrid API key as a secret with the name SENDGRID_API_KEY. If you don't have one you can sign up and get 100 emails per day for free here.

Optionally specifying the script file path

The action assumes there is a Node.js script located at .github/sendgrid.js. This path can be overridden with an environment variable.

    - name: SendGrid
      uses: peter-evans/sendgrid-action@v1
      env:
        SENDGRID_API_KEY: ${{ secrets.SENDGRID_API_KEY }}
        SCRIPT_FILEPATH: ./some-path/email-sending-script.js

Example script files

The following examples are quite basic use cases. For more complicated use cases see the list of examples here.

Sending a single email to a single recipient:

#! /usr/bin/env node

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);

const msg = {
    to: 'recipient@example.org',
    from: 'sender@example.org',
    subject: 'Hello world',
    text: 'Hello plain world!',
    html: '<p>Hello HTML world!</p>',
};

sgMail
    .send(msg)
    .then(() => console.log('Mail sent successfully'))
    .catch(error => console.error(error.toString()));

Sending an attachment:

#! /usr/bin/env node

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);

const fs = require('fs'),
    filename = 'hello-world.pdf',
    fileType = 'application/pdf',
    data = fs.readFileSync('attachments/' + filename);

const msg = {
    to: 'recipient@example.org',
    from: 'sender@example.org',
    subject: 'Hello world',
    text: 'Hello plain world!',
    html: '<p>Hello HTML world!</p>',
    attachments: [
        {
            content: data.toString('base64'),
            filename: filename,
            type: fileType,
            disposition: 'attachment',
        },
    ],
};

sgMail
    .send(msg)
    .then(() => console.log('Mail sent successfully'))
    .catch(error => console.error(error.toString()));

Note: Your script file must be executable otherwise it will cause a permission denied error. Make it executable with this command.

chmod +x email-sending-script.js

License

MIT