Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork27
E-mail delivery library for Rust with DKIM support
License
Apache-2.0, MIT licenses found
Licenses found
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
Code of conduct
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Contributors4
Uh oh!
There was an error while loading.Please reload this page.