This provides user with easy to use email clients collection in rust. You can choose one or more of the email client and use this library to send emails easily.
- Terminal client for local development
- Memory client for test cases
- SMTP client with tls and starttls, local support
- Mailersend configuration
- Easy configuration management
You can add this library to your project using
$ cargo add email_clients
For quick start, you can do the following: Based on the email client you want to support, you need to initialize email configuration as below:
async fn send_email() {
let email = EmailObject {
sender: "[email protected]",
to: vec![EmailAddress { name: "Mail".to_string(), email: "[email protected]".to_string() }],
subject: "subject".to_string(),
plain: "plain body".to_string(),
html: "<a>html body</a>".to_string(),
};
// Choose any of the config as below:
// 1. Terminal client (needs terminal feature, enabled by default)
let terminal_config: TerminalConfig = String::from("[email protected]").into(); // Terminal config
// 2. Smtp config (needs smtp feature)
let smtp_config = SmtpConfig::default().sender("[email protected]").relay("localhost");
// 3. Memory config (needs memory feature)
let (tx, rx) = mpsc::sync_channel(2);
let memory_config = String::from("[email protected]").into();
let email_configuration: EmailConfiguration = terminal_config.into(); // OR any of the other config
let client = get_email_client(email_configuration);
client.send_emails(email).await;
// For memory config, if you want to retain the receiver, you can do so using:
let memory_client = EmailClient::Memory(MemoryClient::with_tx(memory_config, tx));
}
The tests here needs an open mail server listening locally on port 2525. You can do so using:
$ python -m smtpd -n -c DebuggingServer 127.0.0.1:2525