42 个版本
0.15.0 | 2024 年 4 月 29 日 |
---|---|
0.14.1 | 2024 年 1 月 17 日 |
0.14.0 | 2022 年 12 月 6 日 |
0.13.8 | 2022 年 1 月 24 日 |
0.2.0 | 2016 年 6 月 22 日 |
#2 in 邮件
118,412 每月下载量
在 79 个 Crates 中使用 (50 直接)
170KB
3K SLoC
mailparse
简单的 MIME 邮件消息解析器。
API
本库的主要入口点是以下函数
parse_mail(&[u8]) -> Result<ParsedMail, MailParseError>
此函数接受原始消息数据,包括头和正文,并返回一个结构化对象,以便更轻松地访问邮件消息的各个部分。还有其他公共函数可以解析消息的较小部分;请参阅完整文档。
该库旨在处理现实世界的电子邮件数据,例如通过在 IMAP 服务器上使用 FETCH 命令或 Maildir 获取的数据。因此,该库应能够成功处理任何有效的 MIME 格式化消息,尽管它可能不会遵循覆盖格式的各个规范中的所有严格要求(主要是 IETF RFC 822、2045、2047、2822 和 5322)。例如,此库接受使用 \n(ASCII LF)作为行分隔符的原始消息数据,而不是 RFC 规定的 \r\n(ASCII CRLF)行分隔符。
示例用法
use mailparse::*;
let parsed = parse_mail(concat!(
"Subject: This is a test email\n",
"Content-Type: multipart/alternative; boundary=foobar\n",
"Date: Sun, 02 Oct 2016 07:06:22 -0700 (PDT)\n",
"\n",
"--foobar\n",
"Content-Type: text/plain; charset=utf-8\n",
"Content-Transfer-Encoding: quoted-printable\n",
"\n",
"This is the plaintext version, in utf-8. Proof by Euro: =E2=82=AC\n",
"--foobar\n",
"Content-Type: text/html\n",
"Content-Transfer-Encoding: base64\n",
"\n",
"PGh0bWw+PGJvZHk+VGhpcyBpcyB0aGUgPGI+SFRNTDwvYj4gdmVyc2lvbiwgaW4g \n",
"dXMtYXNjaWkuIFByb29mIGJ5IEV1cm86ICZldXJvOzwvYm9keT48L2h0bWw+Cg== \n",
"--foobar--\n",
"After the final boundary stuff gets ignored.\n").as_bytes())
.unwrap();
assert_eq!(parsed.headers.get_first_value("Subject"),
Some("This is a test email".to_string()));
assert_eq!(parsed.subparts.len(), 2);
assert_eq!(parsed.subparts[0].get_body().unwrap(),
"This is the plaintext version, in utf-8. Proof by Euro: \u{20AC}");
assert_eq!(parsed.subparts[1].headers[1].get_value(), "base64");
assert_eq!(parsed.subparts[1].ctype.mimetype, "text/html");
assert!(parsed.subparts[1].get_body().unwrap().starts_with("<html>"));
assert_eq!(dateparse(parsed.headers.get_first_value("Date").unwrap().as_str()).unwrap(), 1475417182);
文档
请参阅docs.rs中的rustdoc。
MSRV 政策
目前支持的最小 Rust 版本(MSRV)是 1.51.0。MSRV 的增加将保持在最低限度,并且将始终伴随次要版本号的增加。
支持 mailparse
如果您想支持 mailparse 的开发,请通过向对抗气候变化捐赠您的金钱、时间和/或精力来支持。一种快速简便的方式是向Replant.ca Environmental 捐赠,那里每捐款一美元就种植一棵树!
依赖项
~3.5MB
~125K SLoC