email/lib.rs
1//! Rust library to manage emails.
2//!
3//! The main purpose of this library is to help people to build custom
4//! email interfaces without caring about how to connect to an IMAP
5//! server or how to send an email via SMTP.
6//!
7//! This goal is achieved by exposing a
8//! [`Backend`](crate::backend::Backend) struct which is just a set of
9//! customizable features like adding a folder, listing envelopes or
10//! sending a message. You also have access to a
11//! [`BackendBuilder`](crate::backend::BackendBuilder) which helps to
12//! build a custom backend.
13//!
14//! The library also exposes pre-configured backend features for
15//! Maildir, IMAP, Notmuch, SMTP and Sendmail.
16//!
17//! See examples in the `/tests` folder.
18//!
19//! ## Backend features
20//!
21//! ### Folder
22//!
23//! - [`AddFolder`](crate::folder::add::AddFolder)
24//! - [`ListFolders`](crate::folder::list::ListFolders)
25//! - [`ExpungeFolder`](crate::folder::expunge::ExpungeFolder)
26//! - [`PurgeFolder`](crate::folder::purge::PurgeFolder)
27//! - [`DeleteFolder`](crate::folder::delete::DeleteFolder)
28//!
29//! ### Envelope
30//!
31//! - [`ListEnvelopes`](crate::envelope::list::ListEnvelopes)
32//! - [`GetEnvelope`](crate::envelope::get::GetEnvelope)
33//!
34//! ### Flag
35//!
36//! - [`AddFlags`](crate::flag::add::AddFlags)
37//! - [`SetFlags`](crate::flag::set::SetFlags)
38//! - [`RemoveFlags`](crate::flag::remove::RemoveFlags)
39//!
40//! ### Message
41//!
42//! - [`AddRawMessage`](crate::message::add_raw::AddRawMessage)
43//! - [`AddRawMessageWithFlags`](crate::message::add_raw_with_flags::AddRawMessageWithFlags)
44//! - [`PeekMessages`](crate::message::peek::PeekMessages)
45//! - [`GetMessages`](crate::message::get::GetMessages)
46//! - [`CopyMessages`](crate::message::copy::CopyMessages)
47//! - [`MoveMessages`](crate::message::move_::MoveMessages)
48//! - [`DeleteMessages`](crate::message::delete::DeleteMessages)
49//! - [`SendRawMessage`](crate::message::send_raw::SendRawMessage)
50
51pub mod account;
52#[cfg(feature = "autoconfig")]
53pub mod autoconfig;
54pub mod backend;
55pub mod config;
56pub mod email;
57mod error;
58pub mod folder;
59#[cfg(feature = "imap")]
60pub mod imap;
61#[cfg(feature = "maildir")]
62pub mod maildir;
63#[cfg(feature = "notmuch")]
64pub mod notmuch;
65pub mod retry;
66#[cfg(feature = "sendmail")]
67pub mod sendmail;
68#[cfg(feature = "derive")]
69pub(crate) mod serde;
70#[cfg(feature = "smtp")]
71pub mod smtp;
72#[cfg(feature = "sync")]
73pub mod sync;
74#[cfg(any(feature = "imap", feature = "smtp"))]
75pub mod tls;
76pub mod watch;
77
78#[doc(inline)]
79pub use crate::{
80 email::{envelope::flag, message::template, *},
81 error::{AnyBoxedError, AnyError, AnyResult},
82};