Skip to main content
Resend Docs
current

Search documentation

Type to search this documentation.

On this pageOverview

Send emails with Rust

Learn how to send your first email using the Resend Rust SDK.

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