Skip to main content
Resend Docs

Search documentation

Type to search this documentation.

On this pageOverview

Send emails with Rust

Before you start, you'll need:

  1. Install

    First, create a rust project with cargo and cd into it.

    Bash
    cargo init resend-rust-example
    cd resend-rust-example

    Next, add add the Rust Resend SDK as well as Tokio:

    Bash
    cargo add resend-rs
    cargo add tokio -F macros,rt-multi-thread

    The Rust SDK is Async-first so Tokio is needed.

  2. Send email

    Rust
    use resend_rs::types::CreateEmailBaseOptions;
    use resend_rs::{Resend, Result};
    
    #[tokio::main]
    async fn main() -> Result<()> {
      let resend = Resend::new("re_xxxxxxxxx");
    
      let from = "Acme <onboarding@resend.dev>";
      let to = ["delivered@resend.dev"];
      let subject = "Hello World";
    
      let email = CreateEmailBaseOptions::new(from, to, subject)
        .with_html("<strong>It works!</strong>");
    
      let _email = resend.emails.send(email).await?;
    
      Ok(())
    }
  3. Reading the API key

    Instead of using Resend::new and hardcoding the API key, the RESEND_API_KEY environment variable can be used instead. Use Resend::default() in that scenario instead.

    Another popular option is to use a .env file for environment variables. You can use the dotenvy crate for that:

    Bash
    cargo add dotenvy
    Rust
    // main.rs
    use dotenvy::dotenv;
    use resend_rs::types::CreateEmailBaseOptions;
    use resend_rs::{Resend, Result};
    
    #[tokio::main]
    async fn main() -> Result<()> {
      let _env = dotenv().unwrap();
    
      let resend = Resend::default();
    
      let from = "Acme <onboarding@resend.dev>";
      let to = ["delivered@resend.dev"];
      let subject = "Hello World";
    
      let email = CreateEmailBaseOptions::new(from, to, subject)
        .with_html("<strong>It works!</strong>");
    
      let _email = resend.emails.send(email).await?;
    
      Ok(())
    }
    TOML
    # .env
    RESEND_API_KEY=re_xxxxxxxxx
Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu