https://github.com/peter-evans/sendgrid-action
A GitHub Action to send email with SendGrid
https://github.com/peter-evans/sendgrid-action
email github-action nodejs sendgrid
Last synced: 1 day ago
JSON representation
A GitHub Action to send email with SendGrid
- Host: GitHub
- URL: https://github.com/peter-evans/sendgrid-action
- Owner: peter-evans
- License: mit
- Created: 2019-06-30T07:18:58.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2022-06-20T00:53:08.000Z (almost 3 years ago)
- Last Synced: 2025-03-30T18:11:57.725Z (20 days ago)
- Topics: email, github-action, nodejs, sendgrid
- Language: Dockerfile
- Size: 25.4 KB
- Stars: 34
- Watchers: 3
- Forks: 20
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-actions - Send email with SendGrid
- fucking-awesome-actions - Send email with SendGrid
- awesome-workflows - Send email with SendGrid
- awesome-actions - 发送邮件 (SendGrid)
- awesome-actions - 发送邮件 (SendGrid)
README
# SendGrid Action
[](https://github.com/marketplace/actions/sendgrid-action)A GitHub Action to send email with [SendGrid](https://sendgrid.com/).
The action executes a Node.js script allowing you to customise sending email with the [Node.js API Library](https://github.com/sendgrid/sendgrid-nodejs).
## Usage
```yml
- 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](https://sendgrid.com/free/).#### 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.```yml
- 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](https://github.com/sendgrid/sendgrid-nodejs/tree/main/docs/use-cases).
Sending a single email to a single recipient:
```node
#! /usr/bin/env nodeconst sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);const msg = {
to: '[email protected]',
from: '[email protected]',
subject: 'Hello world',
text: 'Hello plain world!',
html: 'Hello HTML world!
',
};sgMail
.send(msg)
.then(() => console.log('Mail sent successfully'))
.catch(error => console.error(error.toString()));
```Sending an attachment:
```node
#! /usr/bin/env nodeconst 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: '[email protected]',
from: '[email protected]',
subject: 'Hello world',
text: 'Hello plain world!',
html: 'Hello HTML world!
',
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.
```bash
chmod +x email-sending-script.js
```## License
[MIT](LICENSE)