sendgrid-send
v1.0.7
Published
Generate JSON body for the SendGrid mail API
Downloads
34
Readme
SendGrid Send
You don't need a library to use a REST API. Just create a valid JSON body, and make a POST request to SendGrid.
Features
- TypeScript support - be confident about your JSON.
ESM
andCJS
- choose eitherimport
orrequire
.- Use the Fetch API or any HTTP library[^1] of your choice.
- Literally
0kb
- import a single-line JavaScript function.
[^1]: @sendgrid/mail uses Axios - @sendgrid/client depends on it.
export const generateSgSendBody = (requestBody) => requestBody;
The requestBody
is typed according to the SendGrid API documentation.
Usage
Please reference the SendGrid API documentation for all supported values.
With Fetch API
The generateSgSendRequest
function returns a Request object which can be used with the Fetch API. The URL, method, and HTTP headers are all set.
import { generateSgSendRequest } from 'sendgrid-send';
await fetch(
generateSgSendRequest(
{
from: { email: '[email protected]' },
personalizations: [{ to: [{ email: '[email protected]' }] }],
subject: 'SendGrid and the Fetch API is awesome.',
content: [{ type: 'text/plain', value: 'Best of both worlds.' }],
// ...
},
'<<YOUR_API_KEY_HERE>>'
)
);
Generate Body
npm i sendgrid-send
import { generateSgSendBody } from 'sendgrid-send';
// const { generateSgSendBody } = require('sendgrid-send');
const body = generateSgSendBody({
from: { email: '[email protected]' },
// ...
});
// Make a HTTP request using the method of your choice.
// e.g. node-fetch, cross-fetch, axios, got, undici
await fetch('https://api.sendgrid.com/v3/mail/send', {
method: 'POST',
headers: {
'Authorization': 'Bearer <<YOUR_API_KEY_HERE>>',
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
});
Import Type Only
npm i sendgrid-send -D
import type { SendGridRequestBody } from 'sendgrid-send';
const body = {
from: { email: '[email protected]' },
// ...
} satisfies SendGridRequestBody;
Notes
JavaScript + VS Code
Create a jsconfig.json
file and enable checkJs
.
{
"compilerOptions": {
"checkJs": true
}
}