#mailgun #async

mailgun-rs

An unofficial client library for the Mailgun API

15 releases (2 stable)

1.0.1 Dec 24, 2024
1.0.0 Nov 30, 2024
0.1.12 Oct 11, 2024
0.1.11 May 23, 2024
0.1.3 Sep 26, 2019

#72 in Email

Download history 271/week @ 2024-12-04 197/week @ 2024-12-11 295/week @ 2024-12-18 120/week @ 2024-12-25 73/week @ 2025-01-01 226/week @ 2025-01-08 45/week @ 2025-01-15 311/week @ 2025-01-22 202/week @ 2025-01-29 93/week @ 2025-02-05 199/week @ 2025-02-12 120/week @ 2025-02-19 147/week @ 2025-02-26 158/week @ 2025-03-05 308/week @ 2025-03-12 186/week @ 2025-03-19

831 downloads per month
Used in bestool

MIT license

15KB
212 lines

mailgun-rs

An unofficial client library for the Mailgun API

# Cargo.toml
[dependencies]
mailgun-rs = "1.0.1"

Examples

Send with async

See examples/async

$ cd examples/async
$ cargo run

Send a simple email

use mailgun_rs::{EmailAddress, Mailgun, MailgunRegion, Message};
use std::collections::HashMap;

fn main() {
    let domain = "huatuo.xyz";
    let key = "key-xxxxxx";
    let recipient = "dongrium@gmail.com";

    send_html(recipient, key, domain);
    send_template(recipient, key, domain);
}

fn send_html(recipient: &str, key: &str, domain: &str) {
    let recipient = EmailAddress::address(recipient);
    let message = Message {
        to: vec![recipient],
        subject: String::from("mailgun-rs"),
        html: String::from("<h1>hello from mailgun</h1>"),
        ..Default::default()
    };

    let client = Mailgun {
        api_key: String::from(key),
        domain: String::from(domain),
    };
    let sender = EmailAddress::name_address("no-reply", "no-reply@hackerth.com");

    match client.send(MailgunRegion::US, &sender, message) {
        Ok(_) => {
            println!("successful");
        }
        Err(err) => {
            println!("Error: {err}");
        }
    }
}

Send a template email

fn send_template(recipient: &str, key: &str, domain: &str) {
    let mut template_vars = HashMap::new();
    template_vars.insert(String::from("firstname"), String::from("Dongri"));

    let recipient = EmailAddress::address(recipient);
    let message = Message {
        to: vec![recipient],
        subject: String::from("mailgun-rs"),
        template: String::from("template-1"),
        template_vars,
        ..Default::default()
    };

    let client = Mailgun {
        api_key: String::from(key),
        domain: String::from(domain),
    };
    let sender = EmailAddress::name_address("no-reply", "no-reply@hackerth.com");

    match client.send(MailgunRegion::US, &sender, message) {
        Ok(_) => {
            println!("successful");
        }
        Err(err) => {
            println!("Error: {err}");
        }
    }
}

Dependencies

~4–17MB
~256K SLoC