Skip to main content

Crate jmap_mail_types

Crate jmap_mail_types 

Source
Expand description

RFC 8621 JMAP for Mail data types.

Provides Email, Mailbox, Thread, Identity, EmailSubmission, and SearchSnippet — the core object types defined by RFC 8621.

This crate is types-only: no method handlers, no async, no network I/O. It sits between jmap-types (shared wire primitives) and jmap-mail-server (method handlers).

All types implement serde::Serialize and serde::Deserialize with the camelCase field names required by the JMAP wire format.

§Example

use jmap_mail_types::Mailbox;

let json = r#"{
    "id": "mb1",
    "name": "Inbox",
    "role": "inbox",
    "sortOrder": 10,
    "totalEmails": 42,
    "unreadEmails": 3,
    "totalThreads": 20,
    "unreadThreads": 2,
    "myRights": {
        "mayReadItems": true,
        "mayAddItems": true,
        "mayRemoveItems": true,
        "maySetSeen": true,
        "maySetKeywords": true,
        "mayCreateChild": true,
        "mayRename": true,
        "mayDelete": false,
        "maySubmit": false
    },
    "isSubscribed": true
}"#;

let mailbox: Mailbox = serde_json::from_str(json).unwrap();
assert_eq!(mailbox.name, "Inbox");

Re-exports§

pub use backend::EmailProperty;
pub use backend::EmailSubmissionProperty;
pub use backend::IdentityProperty;
pub use backend::MailboxProperty;
pub use backend::SearchSnippetProperty;
pub use backend::ThreadProperty;
pub use backend::VacationResponseProperty;
pub use capability::MailAccountCapability;
pub use capability::MailCapability;
pub use capability::SubmissionAccountCapability;
pub use capability::SubmissionCapability;
pub use capability::VacationResponseCapability;
pub use capability::JMAP_MAIL_URI;
pub use capability::JMAP_SUBMISSION_URI;
pub use capability::JMAP_VACATIONRESPONSE_URI;
pub use email::Email;
pub use email::EmailAddress;
pub use email::EmailAddressGroup;
pub use email::EmailBodyPart;
pub use email::EmailBodyValue;
pub use email::EmailHeader;
pub use identity::Identity;
pub use keyword::Keyword;
pub use keyword::KeywordError;
pub use mailbox::Mailbox;
pub use mailbox::MailboxFilterCondition;
pub use mailbox::MailboxRights;
pub use mailbox::MailboxRole;
pub use mailbox::MAILBOX_FILTER_CONDITION_KEYS;
pub use query::ComparatorProperty;
pub use query::EmailComparator;
pub use query::EmailFilter;
pub use query::EmailFilterCondition;
pub use query::EmailSubmissionFilter;
pub use query::MailboxFilter;
pub use snippet::SearchSnippet;
pub use submission::Address;
pub use submission::Delivered;
pub use submission::DeliveryStatus;
pub use submission::Displayed;
pub use submission::EmailSubmission;
pub use submission::EmailSubmissionFilterCondition;
pub use submission::Envelope;
pub use submission::UndoStatus;
pub use thread::Thread;
pub use vacation::VacationResponse;

Modules§

backend
Property selector enums and jmap_types::JmapObject impls for RFC 8621 types.
capability
Capability types for the JMAP for Mail extension (RFC 8621).
email
RFC 8621 §4 Email object and its component types.
identity
RFC 8621 §6 Identity object.
keyword
System keyword constants and the Keyword newtype for JMAP Email (RFC 8621 §4.1.1).
mailbox
RFC 8621 §2 Mailbox object and its component types.
query
Email/query filter and comparator types (RFC 8621 §4.4).
snippet
RFC 8621 §5 SearchSnippet object.
submission
EmailSubmission and related types for RFC 8621 §7.
thread
RFC 8621 §3 Thread object.
vacation
RFC 8621 §8 VacationResponse object.

Structs§

FilterOperator
Logical combination of filters (RFC 8620 §5.5).

Enums§

Filter
A filter node: either a logical operator combining sub-filters, or a type-specific condition object (RFC 8620 §5.5).
Operator
Logical operator for combining filter conditions (RFC 8620 §5.5).