Adds a mail backend for SendGrid to the Vapor web framework. Send simple emails, or leverage the full capabilities of SendGrid's V3 API.
Add the dependency to Package.swift:
.package(url: "https://github.com/vapor-community/sendgrid.git", from: "4.0.0")
Make sure SENDGRID_API_KEY
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.
Optionally, explicitly initialize the provider (this is strongly recommended, as otherwise a missing API key will cause a fatal error some time later in your application):
app.sendgrid.initialize()
Now you can access the client at any time:
app.sendgrid.client
You can use all of the available parameters here to build your SendGridEmail
Usage in a route closure would be as followed:
import SendGrid
let email = SendGridEmail(…)
return req.application.sendgrid.client.send([email], on: req.eventLoop)
If the request to the API failed for any reason a SendGridError
is the result
of the future, and has an errors
property that contains an array of errors
returned by the API:
return req.application.sendgrid.client.send([email], on: req.eventLoop).flatMapError { error in
if let sendgridError = error as? SendGridError {
req.logger.error("\(error)")
}
// ...
}