https://github.com/janjaali/sendgrid-mock
SendGrid-Mock serves as a simple server mocking the sendgrid-apis for development purposes.
https://github.com/janjaali/sendgrid-mock
sendgrid
Last synced: 2 months ago
JSON representation
SendGrid-Mock serves as a simple server mocking the sendgrid-apis for development purposes.
- Host: GitHub
- URL: https://github.com/janjaali/sendgrid-mock
- Owner: janjaali
- License: mit
- Created: 2019-01-29T21:34:30.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-20T15:39:02.000Z (8 months ago)
- Last Synced: 2025-04-02T07:56:53.001Z (2 months ago)
- Topics: sendgrid
- Language: JavaScript
- Homepage: https://cloud.docker.com/repository/docker/ghashange/sendgrid-mock/general
- Size: 1.45 MB
- Stars: 51
- Watchers: 2
- Forks: 21
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SendGrid-Mock
SendGrid-Mock serves as a simple server mocking the sendgrid-apis for development purposes.

## Functionalities
### HTTP API
* Send mails `POST /v3/mail/send`
* Retrieve sent mails `GET /api/mails`
* Filter capabilities are included and can be combined:
* **To**: `GET /api/[email protected]`
* **Subject**:
* `GET /api/mails?subject=The subject` (*exact match*)
* `GET /api/mails?subject=%subject%` (*contains*)
* **Datetime**: `GET /api/mails?dateTimeSince=2020-12-06T10:00:00Z` (
*[ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601)*)* Delete sent mails `DELETE /api/mails`
* Filter capabilities are included and can be combined:
* **To**: `DELETE /api/[email protected]`### UI
* Retrieve sent mails and display them
* Delete sent mails### Extras
* Basic authentication support: Add basic authentication credentials by specifying environment variable `AUTHENTICATION` to the following format: `user1:passwordForUser1;user2:passwordForUser2`. This applies only to the static content.
* API key support: Add API key authentication by specifying environment variable `API_KEY`. This applies only to the API endpoints.
* Request rate limiting: Both the actual SendGrid API server as well as the SSL server can be rate limited by specifying environment variables:
* `RATE_LIMIT_ENABLED`: `true` or `false` (default)
* `RATE_LIMIT_WINDOW_IN_MS`: The time window in milliseconds (default: `60000`)
* `RATE_LIMIT_MAX_REQUESTS`: The maximum number of requests allowed in the time window (default: `100`)
* `SSL_RATE_LIMIT_ENABLED`: `true` or `false` (default)
* `SSL_RATE_LIMIT_WINDOW_IN_MS`: The time window in milliseconds (default: `60000`)
* `SSL_RATE_LIMIT_MAX_REQUESTS`: The maximum number of requests allowed in the time window (default: `100`)* By default, all emails older than 24 hours will be deleted. This can be configured using environment variable `MAIL_HISTORY_DURATION` which uses [ISO-8601 Duration format](https://en.wikipedia.org/wiki/ISO_8601#Durations) such as *'PT24H'*.
* Event support: Add basic [event](https://www.twilio.com/docs/sendgrid/for-developers/tracking-events/event#events) support by specifying the environment variable `EVENT_DELIVERY_URL`. When set, [delivered](https://www.twilio.com/docs/sendgrid/for-developers/tracking-events/event#delivered) events will be sent to the specified webhook URL when an email is sent.
## Dockerized
The SendGrid-Mock server and the UI are both contained in the same docker-image which you can pull from [Docker Hub](https://cloud.docker.com/u/ghashange/repository/docker/ghashange/sendgrid-mock) and start it via:
```shell
docker run -it -p 3000:3000 -e "API_KEY=sendgrid-api-key" ghashange/sendgrid-mock:1.12.0
```Some prepared HTTP calls can be found [here](./http-calls).
The UI can be accessed at .
### SSL support
SendGrid-Mock also supports SSL using [Let's Encrypt](https://letsencrypt.org/). To enable SSL, run it as follows:
```shell
docker run -it -p 3000:3000 -e "API_KEY=sendgrid-api-key" -e "CERT_DOMAINNAMES=[your-domain-name]" -e "CERT_EMAIL=[your-email-address]" ghashange/sendgrid-mock:1.12.0
```## Development
Setup with `npm ci` and start both server and UI concurrently with `npm run dev`. Per default the server is reachable via and the UI via .
Some prepared HTTP calls can be found [here](./http-calls).
The UI can be accessed at .
### Build
Create docker image with `docker build -t ghashange/sendgrid-mock:1.12.0 .`.
### Release
1. Update version number in [package.json](./package.json), [version file](./version) and [README](./README.md)
2. Create PR against **master** branch
3. Merge PR
4. Create GitHub release and update [Docker Hub description](https://hub.docker.com/repository/docker/ghashange/sendgrid-mock)