#send-email #smtp #sending #mail-api #combination #submission

mail-smtp

[mail/smtp] 结合 mail-core 和 new-tokio-smtp

4 个版本

使用旧Rust 2015

0.3.0 2020年6月6日
0.2.2 2019年3月26日
0.2.1 2019年3月4日
0.2.0 2018年11月23日

#141 in 邮件


用于 2 crates

MIT/Apache

28KB
450

mail-smtp  

允许通过 new-tokio-smtp 发送 mail-core Mail 的邮件


该库将 new-tokio-smtpmail 库绑定在一起。

它可以用来发送作为 Mail 实例的邮件给邮件提交代理(MSA)。理论上也可以发送到MX,但这通常需要额外的功能来实现可靠的使用,而这些功能并不包含在这个库中。

为了方便使用,这个库重新导出了 new-tokio-smtp 中的一些常用部分,包括 ConnectionConfigConnectionBuilder、所有认证命令/方法(auth 模块)以及有用的类型(在 misc 模块中)。

send_mails 函数是发送一批邮件的最简单方式。然而,它不接受 Mail 实例,而是接受 MailRequest 实例。这是必要的,因为通过 Mail 头部指定的发送者/收件人和用于smtp邮件投递的发送者/收件人可能并不完全相同(例如,对于退回邮件和一些不回复设置)。

示例

extern crate futures;
//if you use the mail facade use the re-exports from it instead
extern crate mail_core;
extern crate mail_smtp;
#[macro_use] extern crate mail_headers;

use futures::Future;
use mail_headers::*;
use mail_headers::components::Domain;
use mail_core::{Mail, default_impl::simple_context};
use mail_smtp::{send_mails, ConnectionConfig};

fn main() {
    // this is normally done _once per application instance_
    // and then stored in e.g. a lazy_static. Also `Domain`
    // will implement `FromStr` in the future.
    let ctx = simple_context::new(
        Domain::from_unchecked("example.com".to_owned(),
        // This should be "world" unique for the given domain
        // to assure message and content ids are world unique.
        "asdkds".parse().unwrap()
    ).unwrap();

    let mut mail = Mail::plain_text("Some body").unwrap();
    mail.set_headers(headers! {
        _From: ["[email protected]"],
        _To: ["[email protected]"],
        Subject: "Some Mail"
    }.unwrap()).unwrap();

    // don't use unencrypted con for anything but testing and
    // simplified examples
    let con_config = ConnectionConfig::build_local_unencrypted().build();

    let fut = send_mails(con_config, vec![mail.into()], ctx);
    let results = fut.wait();
}

文档

文档可以在 docs.rs 上查看。(一旦发布)

许可证

根据以下任一许可证授权:

由您选择。

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交给作品并由您包含的所有贡献,将根据上述内容双授权,不附加任何额外条款或条件。

依赖项

~9–19MB
~268K SLoC