Rust library for email management.
```rust let accountconfig = AccountConfig { email: "test@localhost".into(), displayname: Some("Test".into()), emailsender: EmailSender::Internal(SmtpConfig { host: "localhost".into(), port: 587, starttls: Some(true), login: "login".into(), passwdcmd: "echo password".into(), ..Default::default() }), ..Default::default() };
let imapconfig = ImapConfig { host: "localhost".into(), port: 993, starttls: Some(true), login: "login".into(), passwdcmd: "echo password".into(), ..Default::default() }; let backendconfig = BackendConfig::Imap(&imapconfig);
let mut backend = BackendBuilder::build(&accountconfig, &backendconfig).unwrap(); backend.listenvelope("INBOX", 10, 0).unwrap(); backend.moveemail("INBOX", "Archives", "21").unwrap(); backend.delete_email("INBOX", "42").unwrap();
let mut sender = SenderBuilder::build(&accountconfig).unwrap(); let email = Email::from("To: test2@localhost\r\nSubject: Hello\r\n\r\nContent"); sender.send(&accountconfig, &email).unwrap(); ```
The project is under active development. Do not use in production
before the v1.0.0
.
The role of this library is to extract and expose an API for managing emails. This way, you can build clients that match the best your workflow without reiventing the wheel. Here the list of available clients built by the community:
The development environment is managed by
Nix. Running nix-shell
will spawn
a shell with everything you need to get started with the lib: cargo
,
cargo-watch
, rust-bin
, rust-analyzer
, notmuch
…
shell-session
$ nix-shell
shell-session
$ cargo build
Before running the test suite you need to spawn an IMAP server. Here
an example with docker
and
greenmail
:
```shell-session $ docker run -it --rm \ -p 3025:3025 -p 3110:3110 -p 3143:3143 -p 3465:3465 -p 3993:3993 -p 3995:3995 \ -e GREENMAIL_OPTS='-Dgreenmail.setup.test.all -Dgreenmail.hostname=0.0.0.0 -Dgreenmail.auth.disabled -Dgreenmail.verbose' \ greenmail/standalone:1.6.2
$ cargo test ```
If you find a bug, feel free to open an issue at ~soywod/himalaya-lib.
If you have a feature in mind, feel free to send a patchset at
https://git.sr.ht/~soywod/himalaya-lib/send-email or using the
command git send-email
.
You can also contact me directly on Matrix at @soywod:matrix.org.
Special thanks to the nlnet foundation that helped Himalaya to receive financial support from the NGI Assure program of the European Commission in September, 2022.