Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

E-mail delivery library for Rust with DKIM support

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
NotificationsYou must be signed in to change notification settings

stalwartlabs/mail-send

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

crates.iobuilddocs.rscrates.io

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).

Usage Example

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.

Testing

To run the testsuite:

 $ cargotest --all-features

or, to run the testsuite with MIRI:

 $ cargo +nightly miritest --all-features

License

Licensed under either of

at your option.

Copyright

Copyright (C) 2020-2022, Stalwart Labs Ltd.


[8]ページ先頭

©2009-2025 Movatter.jp