- Notifications
You must be signed in to change notification settings - Fork23
E-mail delivery library for Rust with DKIM support
License
Apache-2.0, MIT licenses found
Licenses found
Apache-2.0
LICENSE-APACHEMIT
LICENSE-MITNotificationsYou must be signed in to change notification settings
stalwartlabs/mail-send
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
mail-send is a Rust library to build, sign and send e-mail messages via SMTP. It includes the following features:
- Generatese-mail messages conforming to the Internet Message Format standard (RFC 5322).
- FullMIME support (RFC 2045 - 2049) with automatic selection of the most optimal encoding for each message body part.
- DomainKeys Identified Mail (DKIM) Signatures (RFC 6376) with ED25519-SHA256, RSA-SHA256 and RSA-SHA1 support.
- Simple Mail Transfer Protocol (SMTP;RFC 5321) delivery.
- SMTP Service Extension for Secure SMTP overTLS (RFC 3207).
- SMTP Service Extension for Authentication (RFC 4954) with automatic mechanism negotiation (from most secure to least secure):
- CRAM-MD5 (RFC 2195)
- DIGEST-MD5 (RFC 2831; obsolete but still supported)
- XOAUTH2 (Google proprietary)
- LOGIN
- PLAIN
- Full async (requires Tokio).
Send a message via an SMTP server that requires authentication:
// Build a simple multipart messagelet message =MessageBuilder::new().from(("John Doe","john@example.com")).to(vec![("Jane Doe","jane@example.com"),("James Smith","james@test.com"),]).subject("Hi!").html_body("<h1>Hello, world!</h1>").text_body("Hello world!");// Connect to the SMTP submissions port, upgrade to TLS and// authenticate using the provided credentials.SmtpClientBuilder::new("smtp.gmail.com",587).implicit_tls(false).credentials(("john","p4ssw0rd")).connect().await.unwrap().send(message).await.unwrap();
Sign a message with DKIM and send it via an SMTP relay server:
// Build a simple text message with a single attachmentlet message =MessageBuilder::new().from(("John Doe","john@example.com")).to("jane@example.com").subject("Howdy!").text_body("These pretzels are making me thirsty.").attachment("image/png","pretzels.png",[1,2,3,4].as_ref());// Sign an e-mail message using RSA-SHA256let pk_rsa =RsaKey::<Sha256>::from_rsa_pem(TEST_KEY).unwrap();let signer =DkimSigner::from_key(pk_rsa).domain("example.com").selector("default").headers(["From","To","Subject"]).expiration(60*60*7);// Number of seconds before this signature expires (optional)// Connect to an SMTP relay server over TLS.// Signs each message with the configured DKIM signer.SmtpClientBuilder::new("smtp.gmail.com",465).connect().await.unwrap().send_signed(message,&signer).await.unwrap();
More examples of how to build messages are available in themail-builder
crate.Please note that this library does not support parsing e-mail messages as this functionality is provided separately by themail-parser
crate.
To run the testsuite:
$ cargotest --all-features
or, to run the testsuite with MIRI:
$ cargo +nightly miritest --all-features
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE orhttp://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT orhttp://opensource.org/licenses/MIT)
at your option.
Copyright (C) 2020-2022, Stalwart Labs Ltd.
About
E-mail delivery library for Rust with DKIM support
Topics
Resources
License
Apache-2.0, MIT licenses found
Licenses found
Apache-2.0
LICENSE-APACHEMIT
LICENSE-MIT