Crate async_mailer
source ·Expand description
Create a dynamic mailer trait object depending on runtime mailer configuration.
Microsoft Outlook and SMTP mailer variants are available.
Using the strongly typed async_mailer::Mailer:
// Create an `impl Mailer`.
//
// Alternative implementations can be used.
let mailer = async_mailer::OutlookMailer::new(
"<Microsoft Identity service tenant>".into(),
"<OAuth2 app GUID>".into(),
async_mailer::Secret::new("<OAuth2 app secret>".into())
).await?;
// Alternative:
let mailer = async_mailer::SmtpMailer::new(
"smtp.example.com".into(),
465,
async_mailer::SmtpInvalidCertsPolicy::Deny,
"<username>".into(),
async_mailer::Secret::new("<password>".into())
);
// Further alternative mailers can be implemented by third parties.
// Build a message using the re-exported `mail_builder::MessageBuilder'.
// For blazingly fast rendering of beautiful HTML mail, I recommend combining `askama` with `mrml`.
use async_mailer::IntoMessage;
let message = async_mailer::MessageBuilder::new()
.from(("From Name", "from@example.com"))
.to("to@example.com")
.subject("Subject")
.text_body("Mail body")
.into_message()?;
// Send the message using the strongly typed `Mailer`.
use async_mailer::Mailer;
mailer.send_mail(message).await?;Using the dynamically typed async_mailer::DynMailer:
// Create a `BoxMailer`.
//
// Alternative implementations can be used.
use async_mailer::BoxMailer;
let mailer: BoxMailer = async_mailer::OutlookMailer::new_box( // Or `new_arc` to use in e.g. globally shared server state.
"<Microsoft Identity service tenant>".into(),
"<OAuth2 app GUID>".into(),
async_mailer::Secret::new("<OAuth2 app secret>".into())
).await?;
// Alternative:
let mailer: BoxMailer = async_mailer::SmtpMailer::new_box( // Or `new_arc` to use in e.g. globally shared server state.
"smtp.example.com".into(),
465,
async_mailer::SmtpInvalidCertsPolicy::Deny,
"<username>".into(),
async_mailer::Secret::new("<password>".into())
);
// Further alternative mailers can be implemented by third parties.
// The trait object is `Send` and `Sync` and may be stored e.g. as part of your server state.
// Build a message using the re-exported `mail_builder::MessageBuilder'.
// For blazingly fast rendering of beautiful HTML mail, I recommend combining `askama` with `mrml`.
use async_mailer::IntoMessage;
let message = async_mailer::MessageBuilder::new()
.from(("From Name", "from@example.com"))
.to("to@example.com")
.subject("Subject")
.text_body("Mail body")
.into_message()?;
// Send the message using the implementation-agnostic `dyn DynMailer`.
mailer.send_mail(message).await?;Re-exports
pub use async_mailer_core::mail_send;pub use async_mailer_core::mail_send::mail_builder;
Structs
- Builds an RFC5322 compliant MIME email message.
- An Outlook mailer client, implementing the
async_mailer::Mailerandasync_mailer::DynMailertraits to be used as generic mailer or runtime-pluggable trait object. - Wrapper type for values that contains secrets, which attempts to limit accidental exposure and ensure secrets are wiped from memory when dropped. (e.g. passwords, cryptographic keys, access tokens or other credentials)
- An SMTP mailer client, implementing the [
async_mailer::Mailer] and [async_mailer::DynMailer] traits to be used as generic mailer or runtime-pluggable trait object.
Enums
- Error returned by
OutlookMailer::newif an access token cannot be retrieved. - Error returned by
OutlookMailer::newandOutlookMailer::send_mail. - Pass to
SmtpMailer::newto either allow or deny invalid SMTP certificates. - Error returned by
SmtpMailer::newandSmtpMailer::send_mail.
Traits
Type Definitions
- Type-erased mailer error, for use of
DynMaileras trait object.