Coder Social home page Coder Social logo

peter-evans_sendgrid-action's Introduction

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: '[email protected]',
    from: '[email protected]',
    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: '[email protected]',
    from: '[email protected]',
    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

peter-evans_sendgrid-action's People

Contributors

ianrios avatar peter-evans avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.