NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2302 most downloaded on crates.io
Email client
Last release 2 months ago
03 Aug 2026
Ships fairly regularly
a new release about every 2 months
Most releases are documented
notes for 39 of 49 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
65 releases · first in 2015
Separate lines of multiline SMTP error replies
base64 to v0.23 (#1152)<a name="v0.11.22"></a>
Fix inverted TLS hostname verification flag in boring-tls backend that silently disabled hostname verification f5efffc
One column per quarter.
Add message_iter to AsyncConnection and Connection
Add raw header setter to MessageBuilder
Allow inline attachments to be named
socket2 to v0.6 (#1098)<a name="v0.11.17"></a>
Add support for rustls-platform-verifier
rustls-platform-verifier (#1081)Mailbox::new instead of string parsing (#1090)Mutex with std Mutex in AsyncStubTransport (#1091)abort_concurrent implementation (#1092)<a name="v0.11.16"></a>
Tls , CertificateStore , TlsParameters , TlsParametersBuilder , Certificate and Identity are now marked as deprecated when no TLS backend is enabled.…
Clone for AsyncFileTransport (#1075)Tls, CertificateStore, TlsParameters, TlsParametersBuilder, Certificate and Identityweb-time behind cfg(target_arch = "wasm32")] (#1086)#[doc(cfg(...))] attributes (#1086)webpki-roots to v1 (#1088)TlsParameters and (Async)NetworkStream structures (#1082)TransportBuilder::tls to avoid recursive call site warnings (#1083)clippy::io_other_error warnings (#1078)Add controlled shutdown methods ( #1045 , #1068 )
unreachable_pub lint (#1058)rustls (#1063)serde (#1064)email-encoding to v0.4 (#1069)<a name="v0.11.14"></a>
This release deprecates the rustls-tls , tokio1-rustls-tls and async-std1-rustls-tls features, which will be removed in lettre v0.12.
This release deprecates the rustls-tls, tokio1-rustls-tls and async-std1-rustls-tls
features, which will be removed in lettre v0.12.
rustls users should start migrating to the rustls, tokio1-rustls and
async-std1-rustls features. Unlike the deprecated *rustls-tls features,
which automatically enabled the ring and webpki-roots backends, the new
features do not. To complete the migration, users must either enable the
aws-lc-rs or the ring feature. Additionally, those who rely on webpki-roots
for TLS certificate verification must now explicitly enable its feature.
Users of rustls-native-certs do not need to enable webpki-roots.
Find out more about the new features via the lettre rustls docs.
rustls crypto providers and TLS verifiers (#1054)rustls crypto provider everywhere (#1055)AsyncNetworkStream being public (#1059)nom to v8 ([#1048])rustls-pemfile in favor of rustls-pki-types APIs (#1050)std::time::SystemTime::now via clippy (#1043)rustls-pki-types (#1051)web-time refactor (#1049)rustls-native-certs when tracing is disabled (#1053)Cargo.toml style (#1047)Add WASM support ([#1037], [#1042])
Warn against manually configuring port and tls on SMTP transport builder ([#1014])
port and tls on SMTP transport builder (#1014)Tls enum (#1015)ContentType::TEXT_PLAIN to Message builder examples (#1017)SmtpTransport and AsyncSmtpTransport (#1018)credentials method (#1019)transport::smtp module (#1031)from_url (#1032)assert! with ? on send examples (#1033)<a name="v0.11.11"></a>
Fix off-by-one error reaching the minimum number of configured pooled connections ([#1012])
Ignore disconnect errors when pool feature of SMTP transport is disabled ([#999])
Fix feature gate for accept_invalid_hostnames for rustls ([#988])
Implement accept_invalid_hostnames for rustls ([#977])
accept_invalid_hostnames for rustls (#977)rustls or boring-tls (#976)HeaderName comparisons via PartialEq case insensitive (#980)#[non_exhaustive] for InvalidHeaderName (#981)<a name="v0.11.7"></a>
Fix tracing message consistency ([#960])
Upgraded email-encoding to v0.3 - fixing multiple encoding bugs in the process ([#952])
Support SMTP SASL draft login challenge ([#911])
Percent decode credentials in SMTP connect URL ([#932], [#934])
Derive Clone for FileTransport and AsyncFileTransport ([#924])
Bump boring and tokio-boring to v4 ([#915])
Fix webpki-roots certificate store setup ([#909])
While this release technically contains breaking changes, we expect most projects to be able to upgrade by only bumping the version in Cargo.toml.
While this release technically contains breaking changes, we expect most projects
to be able to upgrade by only bumping the version in Cargo.toml.
From<Address> implementation for Mailbox (#879)socket2 to v0.5 (#868)idna to v0.4, fastrand to v2, quoted_printable to v0.5, rsa to v0.9 (#882)webpki-roots to v0.25 (#884 and #890)ed25519-dalek to v2 fixing RUSTSEC-2022-0093 (#896)boringssl crates to v3 (#897)<a name="v0.10.4"></a>
Bumped rustls to 0.21 and all related dependencies ([#867])
It was found that what had been used until now as a basic lettre 0.10 MessageBuilder::body example failed to mention that for maximum compatibility wi
It was found that what had been used until now as a basic lettre 0.10
MessageBuilder::body example failed to mention that for maximum
compatibility with various email clients a Content-Type header
should always be present in the message.
Message::builder()
// [...] some headers skipped for brevity
.body(String::from("A plaintext or html body"))?
Message::builder()
// [...] some headers skipped for brevity
+ .header(ContentType::TEXT_PLAIN) // or `TEXT_HTML` if the body is html
.body(String::from("A plaintext or html body"))?
<a name="v0.10.2"></a>
Allow providing a custom tokio stream for AsyncSmtpTransport ([#805])
tokio stream for AsyncSmtpTransport (#805)quoted_printable ^0.4.6 in order to fix encoding of tabs and spaces at the end of line (#837)idna to 0.3 (#816)base64 to 0.21 (#840 and #851)rsa to 0.8 (#829 and #852)<a name="v0.10.1"></a>
Add boring-tls support for SmtpTransport and AsyncSmtpTransport. The latter is only supported with the tokio runtime. ([#797]) ([#798])
Several breaking changes were made between 0.9 and 0.10, but changes should be straightforward:
Several breaking changes were made between 0.9 and 0.10, but changes should be straightforward:
lettre_email crate has been merged into lettre. To migrate, replace lettre_email with lettre::message
and make sure to enable the builder feature (it's enabled by default).SendableEmail has been renamed to Email and EmailBuilder::build() produces it directly. To migrate,
rename SendableEmail to Email.serde-impls feature has been renamed to serde. To migrate, rename the feature.tokio 1 supportrustls supportasync-std support. NOTE: native-tls isn't supported when using async-std for the smtp transport.lettre_email into lettreEmail and SendableEmail into lettre::message::EmailTlsParameters implementation to not expose the internal TLS libraryFileTransport writes emails into .eml instead of .json127.0.0.1 is used instead of localhost as EHLO parameter (for better RFC compliance and mail server compatibility)sendmail and file transports aren't enabled by default anymore.new method of ClientId is deprecatedserde-impls feature to serdeSendmailTransport now uses the sendmail command in current PATH by default instead of
/usr/bin/sendmail.SendmailTransport (see RUSTSEC-2020-0069)domain fieldline-wrap, email, bufstream with our own implementationsbytestimefast_chemailbase64 to 0.13hostname to 0.3nom 6log with tracing<a name="v0.9.2"></a>
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fix compilation with Rust 1.36+
#### Features * email: * Re-export mime crate
Inserting 'from' from envelope into message headers
email:
transport:
all:
transport:
email:
<a name="v0.8.2"></a>
Nothing published for this version
Nothing published for this version
transport: Write timeout is not set in smtp transport
<a name="v0.8.1"></a>
Replace skeptic by some custom rustdoc invocations
Support binary files as attachment
ClientId when availableEnvelope was moved from lettre_email to lettreEmailAddress::new() now returns a ResultSendableEmail replaces from and to by envelope that returns an EnvelopeFile transport storage format has changedget_ehlo and reset in SmtpTransport are now private<a name="v0.7.0"></a>
Nothing published for this version
Allow validating server certificate
<a name="v0.6.2"></a>
Nothing published for this version
#### Changed * Update env-logger crate to 0.4 * Update openssl crate to 0.9 * Update uuid crate to 0.4
<a name="v0.6.1"></a>
Your coding agent can read these notes before it upgrades. Set up the MCP server →