SendGrid Action
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