Expand description

Postmark is a HTTP client agnostic rust client to postmark. We Provide a reqwest implementation of a client that can be used pretty simply by initializing it and passing it into the execute function of a Query, all Endpoint implement the Query trait.

Some Endpoints are already provided to you. But if you need some that are not implemented you are not constrained to modified this crated, you can implement your own by implementing the Endpoint trait and it will work transparently with this library.

To use the [reqwest] based client, you need to enable the feature "reqwest" You can also implement you own client by implementing the Client trait

This crate is heavily inspired by the article “Designing Rust bindings for REST APIs by Ben Boeckel and used in the gitlab crate. It allows to have modular clients (someone wants to use something else than reqwest), and Endpoints not supported by the library without needing to fork it.


use postmark::reqwest::PostmarkClient;
use postmark::*;

let client = PostmarkClient::builder()

let req = api::email::SendEmailRequest::builder()
  .body(api::email::Body::Text("Hi, this is me!".to_string()))
let resp = req.execute(&client).await;


You’ll find in api all the different predefined endpoints organized by Postmark api sections


An error thrown by the Query trait


POSTMARK_API_URL is the default url to poke Postmark’s API


A trait representing a client which can communicate with a Postmark instance.

A trait for providing the necessary information for a single REST API endpoint.

A trait which represents an asynchronous query which may be made to a Postmark client.