/sendgrid-action

A GitHub Action to send email with SendGrid

Primary LanguageDockerfileMIT LicenseMIT

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