10 个版本
0.3.2 | 2024年4月5日 |
---|---|
0.3.1 | 2024年4月5日 |
0.3.0 | 2023年10月24日 |
0.2.3 | 2023年5月31日 |
0.1.2 | 2023年5月16日 |
#167 in 邮件
在 async-mailer 中使用
25KB
199 行
一个 Outlook 邮件库,可以作为独立库使用,也可以作为泛型 Mailer
或动态 dyn DynMailer
。
建议使用 async-mailer
,它从这个crate中重新导出,而不是直接使用 async-mailer-outlook
。
您可以通过 async-mailer
功能开关来控制重新导出的邮件库实现,以及 tracing
支持。
示例
使用静态类型的 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::Secret::new("<OAuth2 app secret>".into())
).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", "[email protected]"))
.to("[email protected]")
.subject("Subject")
.text_body("Mail body")
.into_message()?;
// Send the message using the statically typed `Mailer`.
mailer.send_mail(message).await?;
使用动态类型的 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::Secret::new("<OAuth2 app secret>".into())
).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", "[email protected]"))
.to("[email protected]")
.subject("Subject")
.text_body("Mail body")
.into_message()?;
// Send the message using the implementation-agnostic `dyn DynMailer`.
mailer.send_mail(message).await?;
功能标志
tracing
:启用使用tracing
crate 的调试和错误日志。所有相关函数都已进行跟踪。
默认:tracing
。
路线图
计划在 OutlookMailer
中实现访问令牌自动刷新。
依赖关系
~14–28MB
~553K SLoC