| Crates.io | mailgun-rs |
| lib.rs | mailgun-rs |
| version | 2.0.1 |
| created_at | 2019-09-09 12:23:46.385148+00 |
| updated_at | 2025-06-05 12:44:02.244729+00 |
| description | An unofficial client library for the Mailgun API |
| homepage | |
| repository | https://github.com/dongri/mailgun-rs |
| max_upload_size | |
| id | 163500 |
| size | 493,914 |
An unofficial client library for the Mailgun API
# Cargo.toml
[dependencies]
mailgun-rs = "2.0.1"
See examples/async
$ cd examples/async
$ cargo run
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);
send_html_with_attachment(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@huatuo.xyz");
match client.send(MailgunRegion::US, &sender, message, None) {
Ok(_) => {
println!("successful");
}
Err(err) => {
println!("Error: {err}");
}
}
}
fn send_template(recipient: &str, key: &str, domain: &str) {
let mut template_vars = HashMap::new();
template_vars.insert(String::from("name"), String::from("Dongri Jin"));
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@huatuo.xyz");
match client.send(MailgunRegion::US, &sender, message, None) {
Ok(_) => {
println!("successful");
}
Err(err) => {
println!("Error: {err}");
}
}
}
fn send_html_with_attachment(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 with attachments</h1>"),
..Default::default()
};
let client = Mailgun {
api_key: String::from(key),
domain: String::from(domain),
};
let sender = EmailAddress::name_address("no-reply", "no-reply@huatuo.xyz");
let attachments = vec![
Attachment::builder()
.path("/path/to/attachment-1.txt".to_string())
.attachment_type(AttachmentType::Attachment)
.build(),
Attachment::builder()
.path("/path/to/attachment-2.txt".to_string())
.attachment_type(AttachmentType::Inline)
.build(),
];
match client.send(MailgunRegion::US, &sender, message, Some(attachments)) {
Ok(_) => {
println!("successful");
}
Err(err) => {
println!("Error: {err}");
}
}
}