#smtp #template #rfc-5322 #mime

已弃用 mail

mail,为创建和发送邮件提供一系列邮件相关crate的包装

13个版本

使用旧的Rust 2015

0.7.0 2020年6月6日
0.6.12 2019年10月11日
0.6.10 2019年3月26日
0.6.7 2019年2月14日
0.1.0-unstable 2017年3月4日

#7 in #rfc-5322

28 每月下载量

MIT/Apache

57KB
53

mail  

文档可以在docs.rs上查看。

包装器,重新导出多个邮件相关crate的功能。

包装器应该导出足够的功能,以便使用邮件crate创建/修改/编码邮件,通过smtp发送它们(特性)或使用基于handlebars的模板引擎从模板创建它们(特性)。

以下crate的功能被重新导出

  • mail-core提供了一种Mail类型以及创建/修改/编码邮件的核心功能。
  • mail-headers提供了邮件头的实现。这还包括许多出现在邮件头主体中但也在其他位置重复使用的头组件(例如,来自Content-Type头或DomainMediaType)。
  • mail-smtpnew-tokio-smtp绑定在一起,以便更容易通过smtp发送邮件。这还包括自动从邮件(如果没有明确给出发送者/接收者)派生smtp发送者/接收者的功能(smtp按照标准不使用邮件的From/To头。相反,它将邮件及其头(主要)视为一个不可见的数据块。但在实践中,From/To/Sender中的地址往往与smtp发送者/接收者匹配)。
  • mail-template提供了一种简单的方法将模板引擎绑定到生成邮件。它有一个特性,如果启用,则直接包含对handlebars的绑定。这个特性作为crate中的handlebars特性重新导出。
  • mail-internals提供了一些其他crate使用的共享内部部分。这通常只在编写自己的邮件头实现时需要。即使如此,这个crate也会重新导出最可能需要的部分(在header_encoding模块中)。

示例

mail_by_hand

创建并编码一个简单的邮件,不使用任何花哨的辅助工具、模板或类似的东西。

mail_from_template

使用对handlebars模板引擎的绑定来创建邮件,包括备用正文和附件。

send_mail

一个简单的程序,它会向用户询问信息,然后向MSA(邮件提交代理)发送(简单的)邮件。虽然目前仅限于在端口587上使用STARTTLS,Auth Plain以及仅简单文本邮件,但这并非邮件库的限制,而是此命令行程序的限制,因为邮件库可以处理其他形式的连接和认证等。

请注意,这是用于向MSA发送数据,而不是MX(邮件交换),例如 smtp.gmail.com 是一个MSA,但 gmail-smtp-in.l.google.com 是一个MX。另外,请注意,一些邮件服务提供商不接受Auth Plain(至少在没有在安全设置中启用的情况下不接受)。原因在于他们更倾向于应用程序使用其他格式进行认证,例如OAuth2令牌。

请放心,认证数据仅通过TLS加密通道发送。尽管如此,如果您不信任它,可以考虑使用一些一次性或测试邮件服务,例如 ethereal.email

最后,该示例每次使用相同的唯一种子,这意味着Message-ID和Content-ID可能不是全球唯一的,尽管它们应该是(这同样是示例的限制,而非邮件库)。尽管如此,由于它也没有使用自己的域,而是使用一个 .test 域,因此无法保证全球唯一性,而且会失败许多垃圾邮件过滤器,因此如果您使用它,请确保将其更改为您用例的正确值。

特性

smtp

通过重新导出 mail-smtp crate,在 mail::smtp 下提供了对 new-tokio-smtp 的绑定

handlebars

提供使用 handlebars crate实现的 mail-template 引擎。它位于 mail::template::handlebars::Handlebars

traceing

启用来自 mail-internalsEncodingBuffer 中的 traceing 调试功能,这仅用于测试头部实现,并带来明显的开销。因此,此功能不应用于除测试头部实现之外的其他目的。此外,EncodingBuffer 不会被重新导出,因为它可以被视为实现的一个内部部分,通常不需要直接访问。

许可证

根据您的选择,以下任一许可证

贡献

除非您明确声明,否则您提交的任何有意包含在作品中的贡献,根据Apache-2.0许可证定义,将按照上述方式双许可,不附加任何额外条款或条件。

依赖关系

~6–18MB
~268K SLoC