Expand description
An Outlook mailer, usable either stand-alone or as either generic Mailer or dynamic dyn DynMailer.
Preferably, use async-mailer, which re-exports from this crate,
rather than using async-mailer-outlook directly.
You can control the re-exported mailer implementations,
as well as tracing support,
via async-mailer feature toggles.
§Examples
§Using the statically typed Mailer:
// Both `async_mailer::OutlookMailer` and `async_mailer::SmtpMailer` implement `Mailer`
// and can be used with `impl Mailer` or `<M: Mailer>` bounds.
let mailer = OutlookMailer::new(
"<Microsoft Identity service tenant>".into(),
"<OAuth2 app GUID>".into(),
secrecy::SecretString::from("<OAuth2 app secret>")
).await?;
// An alternative `SmtpMailer` can be found at `async-mailer-smtp`.
// 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`.
let message = async_mailer_core::mail_send::mail_builder::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 statically typed `Mailer`.
mailer.send_mail(message).await?;§Using the dynamically typed DynMailer:
// Both `async_mailer::OutlookMailer` and `async_mailer::SmtpMailer`
// implement `DynMailer` and can be used as trait objects.
//
// Here they are used as `BoxMailer`, which is an alias to `Box<dyn DynMailer>`.
let mailer: BoxMailer = OutlookMailer::new_box( // Or `OUtlookMailer::new_arc()`.
"<Microsoft Identity service tenant>".into(),
"<OAuth2 app GUID>".into(),
secrecy::SecretString::from("<OAuth2 app secret>")
).await?;
// An alternative `SmtpMailer` can be found at `async-mailer-smtp`.
// 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`.
let message = async_mailer_core::mail_send::mail_builder::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?;§Feature flags
tracing: Enable debug and error logging using thetracingcrate. All relevant functions are instrumented.
Default: tracing.
§Roadmap
Access token auto-refresh is planned to be implemented on the OutlookMailer.
Structs§
- Outlook
Mailer - An Outlook mailer client, implementing the
async_mailer_core::Mailerandasync_mailer_core::DynMailertraits to be used as generic mailer or runtime-pluggable trait object.
Enums§
- Outlook
Access Token Error - Error returned by
OutlookMailer::newif an access token cannot be retrieved. - Outlook
Mailer Error - Error returned by
OutlookMailer::newandOutlookMailer::send_mail.