An open API service indexing awesome lists of open source software.

https://github.com/vapor-community/sendgrid

📧 SendGrid-powered mail backend for Vapor
https://github.com/vapor-community/sendgrid

email sendgrid server-side-swift swift swift-linux swift-package swift-package-manager vapor vapor-provider vapor-service

Last synced: 3 months ago
JSON representation

📧 SendGrid-powered mail backend for Vapor

Awesome Lists containing this project

README

        


avatar

SendGrid



Documentation

Team Chat
MIT License

Continuous Integration





Swift 6.0+



📧 SendGrid library for the Vapor web framework, based on [SendGridKit](https://github.com/vapor-community/sendgrid-kit).

Send simple emails or leverage the full capabilities of [SendGrid's V3 API](https://www.twilio.com/docs/sendgrid/api-reference/mail-send/mail-send).

### Getting Started

Use the SPM string to easily include the dependendency in your `Package.swift` file

```swift
.package(url: "https://github.com/vapor-community/sendgrid.git", from: "6.0.0"),
```

and add it to your target's dependencies:

```swift
.product(name: "SendGrid", package: "sendgrid"),
```

## Overview

> [!WARNING]
> Make sure that the `SENDGRID_API_KEY` variable is set in your environment.
This can be set in the Xcode scheme, or specified in your `docker-compose.yml`, or even provided as part of a `swift run` command.
A missing API key will result in a fatal error.

### Using the API

You can use all of the available parameters here to build your `SendGridEmail`.

Usage in a route closure would be as followed:

```swift
import SendGrid

let email = SendGridEmail(…)
try await req.sendgrid.client.send(email: email)
```

### Error handling

If the request to the API failed for any reason a `SendGridError` is thrown, which has an `errors` property that contains an array of errors returned by the API.

Simply ensure you catch errors thrown like any other throwing function.

```swift
import SendGrid

do {
try await req.sendgrid.client.send(email: email)
} catch let error as SendGridError {
req.logger.error("\(error.errors)")
}
```