Struct Email

Source
pub struct Email<State = Get> { /* private fields */ }

Implementations§

Source§

impl Email<Get>

Source

pub fn id(&self) -> Option<&str>

Source

pub fn take_id(&mut self) -> String

Source

pub fn blob_id(&self) -> Option<&str>

Source

pub fn take_blob_id(&mut self) -> String

Source

pub fn thread_id(&self) -> Option<&str>

Source

pub fn take_thread_id(&mut self) -> Option<String>

Source

pub fn mailbox_ids(&self) -> Vec<&str>

Source

pub fn keywords(&self) -> Vec<&str>

Examples found in repository?
examples/messages.rs (line 97)
33async fn messages() {
34    // Connect to the JMAP server using Basic authentication
35    let client = Client::new()
36        .credentials(("john@example.org", "secret"))
37        .connect("https://jmap.example.org")
38        .await
39        .unwrap();
40
41    // Query mailboxes to obtain Inbox and Trash folder id
42    let inbox_id = client
43        .mailbox_query(
44            mailbox::query::Filter::role(Role::Inbox).into(),
45            None::<Vec<_>>,
46        )
47        .await
48        .unwrap()
49        .take_ids()
50        .pop()
51        .unwrap();
52    let trash_id = client
53        .mailbox_query(
54            mailbox::query::Filter::role(Role::Trash).into(),
55            None::<Vec<_>>,
56        )
57        .await
58        .unwrap()
59        .take_ids()
60        .pop()
61        .unwrap();
62
63    // Import message into inbox
64    client
65        .email_import(TEST_MESSAGE.to_vec(), [&inbox_id], ["$draft"].into(), None)
66        .await
67        .unwrap();
68
69    // Query mailbox
70    let email_id = client
71        .email_query(
72            Filter::and([
73                email::query::Filter::subject("test"),
74                email::query::Filter::in_mailbox(&inbox_id),
75                email::query::Filter::has_keyword("$draft"),
76            ])
77            .into(),
78            [email::query::Comparator::from()].into(),
79        )
80        .await
81        .unwrap()
82        .take_ids()
83        .pop()
84        .unwrap();
85
86    // Fetch message
87    let email = client
88        .email_get(
89            &email_id,
90            [Property::Subject, Property::Preview, Property::Keywords].into(),
91        )
92        .await
93        .unwrap()
94        .unwrap();
95    assert_eq!(email.preview().unwrap(), "This is a test.");
96    assert_eq!(email.subject().unwrap(), "Testing JMAP client");
97    assert_eq!(email.keywords(), ["$draft"]);
98
99    // Remove the $draft keyword
100    client
101        .email_set_keyword(&email_id, "$draft", false)
102        .await
103        .unwrap();
104
105    // Replace all keywords
106    client
107        .email_set_keywords(&email_id, ["$seen", "$important"])
108        .await
109        .unwrap();
110
111    // Move the message to the Trash folder
112    client
113        .email_set_mailboxes(&email_id, [&trash_id])
114        .await
115        .unwrap();
116
117    // Destroy the e-mail
118    client.email_destroy(&email_id).await.unwrap();
119}
Source

pub fn size(&self) -> usize

Source

pub fn received_at(&self) -> Option<i64>

Source

pub fn message_id(&self) -> Option<&[String]>

Source

pub fn in_reply_to(&self) -> Option<&[String]>

Source

pub fn references(&self) -> Option<&[String]>

Source

pub fn sender(&self) -> Option<&[EmailAddress]>

Source

pub fn take_sender(&mut self) -> Option<Vec<EmailAddress>>

Source

pub fn from(&self) -> Option<&[EmailAddress]>

Source

pub fn take_from(&mut self) -> Option<Vec<EmailAddress>>

Source

pub fn reply_to(&self) -> Option<&[EmailAddress]>

Source

pub fn take_reply_to(&mut self) -> Option<Vec<EmailAddress>>

Source

pub fn to(&self) -> Option<&[EmailAddress]>

Source

pub fn take_to(&mut self) -> Option<Vec<EmailAddress>>

Source

pub fn cc(&self) -> Option<&[EmailAddress]>

Source

pub fn take_cc(&mut self) -> Option<Vec<EmailAddress>>

Source

pub fn bcc(&self) -> Option<&[EmailAddress]>

Source

pub fn take_bcc(&mut self) -> Option<Vec<EmailAddress>>

Source

pub fn subject(&self) -> Option<&str>

Examples found in repository?
examples/messages.rs (line 96)
33async fn messages() {
34    // Connect to the JMAP server using Basic authentication
35    let client = Client::new()
36        .credentials(("john@example.org", "secret"))
37        .connect("https://jmap.example.org")
38        .await
39        .unwrap();
40
41    // Query mailboxes to obtain Inbox and Trash folder id
42    let inbox_id = client
43        .mailbox_query(
44            mailbox::query::Filter::role(Role::Inbox).into(),
45            None::<Vec<_>>,
46        )
47        .await
48        .unwrap()
49        .take_ids()
50        .pop()
51        .unwrap();
52    let trash_id = client
53        .mailbox_query(
54            mailbox::query::Filter::role(Role::Trash).into(),
55            None::<Vec<_>>,
56        )
57        .await
58        .unwrap()
59        .take_ids()
60        .pop()
61        .unwrap();
62
63    // Import message into inbox
64    client
65        .email_import(TEST_MESSAGE.to_vec(), [&inbox_id], ["$draft"].into(), None)
66        .await
67        .unwrap();
68
69    // Query mailbox
70    let email_id = client
71        .email_query(
72            Filter::and([
73                email::query::Filter::subject("test"),
74                email::query::Filter::in_mailbox(&inbox_id),
75                email::query::Filter::has_keyword("$draft"),
76            ])
77            .into(),
78            [email::query::Comparator::from()].into(),
79        )
80        .await
81        .unwrap()
82        .take_ids()
83        .pop()
84        .unwrap();
85
86    // Fetch message
87    let email = client
88        .email_get(
89            &email_id,
90            [Property::Subject, Property::Preview, Property::Keywords].into(),
91        )
92        .await
93        .unwrap()
94        .unwrap();
95    assert_eq!(email.preview().unwrap(), "This is a test.");
96    assert_eq!(email.subject().unwrap(), "Testing JMAP client");
97    assert_eq!(email.keywords(), ["$draft"]);
98
99    // Remove the $draft keyword
100    client
101        .email_set_keyword(&email_id, "$draft", false)
102        .await
103        .unwrap();
104
105    // Replace all keywords
106    client
107        .email_set_keywords(&email_id, ["$seen", "$important"])
108        .await
109        .unwrap();
110
111    // Move the message to the Trash folder
112    client
113        .email_set_mailboxes(&email_id, [&trash_id])
114        .await
115        .unwrap();
116
117    // Destroy the e-mail
118    client.email_destroy(&email_id).await.unwrap();
119}
Source

pub fn take_subject(&mut self) -> Option<String>

Source

pub fn sent_at(&self) -> Option<i64>

Source

pub fn body_structure(&self) -> Option<&EmailBodyPart>

Source

pub fn body_value(&self, id: &str) -> Option<&EmailBodyValue>

Source

pub fn text_body(&self) -> Option<&[EmailBodyPart]>

Source

pub fn html_body(&self) -> Option<&[EmailBodyPart]>

Source

pub fn attachments(&self) -> Option<&[EmailBodyPart]>

Source

pub fn has_attachment(&self) -> bool

Source

pub fn header(&self, id: &Header) -> Option<&HeaderValue>

Source

pub fn has_header(&self, id: &Header) -> bool

Source

pub fn preview(&self) -> Option<&str>

Examples found in repository?
examples/messages.rs (line 95)
33async fn messages() {
34    // Connect to the JMAP server using Basic authentication
35    let client = Client::new()
36        .credentials(("john@example.org", "secret"))
37        .connect("https://jmap.example.org")
38        .await
39        .unwrap();
40
41    // Query mailboxes to obtain Inbox and Trash folder id
42    let inbox_id = client
43        .mailbox_query(
44            mailbox::query::Filter::role(Role::Inbox).into(),
45            None::<Vec<_>>,
46        )
47        .await
48        .unwrap()
49        .take_ids()
50        .pop()
51        .unwrap();
52    let trash_id = client
53        .mailbox_query(
54            mailbox::query::Filter::role(Role::Trash).into(),
55            None::<Vec<_>>,
56        )
57        .await
58        .unwrap()
59        .take_ids()
60        .pop()
61        .unwrap();
62
63    // Import message into inbox
64    client
65        .email_import(TEST_MESSAGE.to_vec(), [&inbox_id], ["$draft"].into(), None)
66        .await
67        .unwrap();
68
69    // Query mailbox
70    let email_id = client
71        .email_query(
72            Filter::and([
73                email::query::Filter::subject("test"),
74                email::query::Filter::in_mailbox(&inbox_id),
75                email::query::Filter::has_keyword("$draft"),
76            ])
77            .into(),
78            [email::query::Comparator::from()].into(),
79        )
80        .await
81        .unwrap()
82        .take_ids()
83        .pop()
84        .unwrap();
85
86    // Fetch message
87    let email = client
88        .email_get(
89            &email_id,
90            [Property::Subject, Property::Preview, Property::Keywords].into(),
91        )
92        .await
93        .unwrap()
94        .unwrap();
95    assert_eq!(email.preview().unwrap(), "This is a test.");
96    assert_eq!(email.subject().unwrap(), "Testing JMAP client");
97    assert_eq!(email.keywords(), ["$draft"]);
98
99    // Remove the $draft keyword
100    client
101        .email_set_keyword(&email_id, "$draft", false)
102        .await
103        .unwrap();
104
105    // Replace all keywords
106    client
107        .email_set_keywords(&email_id, ["$seen", "$important"])
108        .await
109        .unwrap();
110
111    // Move the message to the Trash folder
112    client
113        .email_set_mailboxes(&email_id, [&trash_id])
114        .await
115        .unwrap();
116
117    // Destroy the e-mail
118    client.email_destroy(&email_id).await.unwrap();
119}
Source

pub fn take_preview(&mut self) -> Option<String>

Source§

impl Email<Set>

Source

pub fn mailbox_ids<T, U>(&mut self, mailbox_ids: T) -> &mut Self
where T: IntoIterator<Item = U>, U: Into<String>,

Source

pub fn mailbox_ids_ref(&mut self, reference: ResultReference) -> &mut Self

Source

pub fn mailbox_id(&mut self, mailbox_id: &str, set: bool) -> &mut Self

Source

pub fn keywords<T, U>(&mut self, keywords: T) -> &mut Self
where T: IntoIterator<Item = U>, U: Into<String>,

Source

pub fn keyword(&mut self, keyword: &str, set: bool) -> &mut Self

Source

pub fn message_id<T, U>(&mut self, message_id: T) -> &mut Self
where T: IntoIterator<Item = U>, U: Into<String>,

Source

pub fn in_reply_to<T, U>(&mut self, in_reply_to: T) -> &mut Self
where T: IntoIterator<Item = U>, U: Into<String>,

Source

pub fn references<T, U>(&mut self, references: T) -> &mut Self
where T: IntoIterator<Item = U>, U: Into<String>,

Source

pub fn sender<T, U>(&mut self, sender: T) -> &mut Self
where T: IntoIterator<Item = U>, U: Into<EmailAddress>,

Source

pub fn from<T, U>(&mut self, from: T) -> &mut Self
where T: IntoIterator<Item = U>, U: Into<EmailAddress>,

Source

pub fn to<T, U>(&mut self, to: T) -> &mut Self
where T: IntoIterator<Item = U>, U: Into<EmailAddress>,

Source

pub fn cc<T, U>(&mut self, cc: T) -> &mut Self
where T: IntoIterator<Item = U>, U: Into<EmailAddress>,

Source

pub fn bcc<T, U>(&mut self, bcc: T) -> &mut Self
where T: IntoIterator<Item = U>, U: Into<EmailAddress>,

Source

pub fn reply_to<T, U>(&mut self, reply_to: T) -> &mut Self
where T: IntoIterator<Item = U>, U: Into<EmailAddress>,

Source

pub fn subject(&mut self, subject: impl Into<String>) -> &mut Self

Source

pub fn sent_at(&mut self, sent_at: i64) -> &mut Self

Source

pub fn body_structure(&mut self, body_structure: EmailBodyPart) -> &mut Self

Source

pub fn body_value( &mut self, id: String, body_value: impl Into<EmailBodyValue>, ) -> &mut Self

Source

pub fn text_body( &mut self, text_body: impl Into<EmailBodyPart<Get>>, ) -> &mut Self

Source

pub fn html_body( &mut self, html_body: impl Into<EmailBodyPart<Get>>, ) -> &mut Self

Source

pub fn attachment( &mut self, attachment: impl Into<EmailBodyPart<Get>>, ) -> &mut Self

Source

pub fn header( &mut self, header: Header, value: impl Into<HeaderValue>, ) -> &mut Self

Source

pub fn received_at(&mut self, received_at: i64) -> &mut Self

Trait Implementations§

Source§

impl ChangesObject for Email<Get>

Source§

impl ChangesObject for Email<Set>

Source§

impl<State: Clone> Clone for Email<State>

Source§

fn clone(&self) -> Email<State>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<State: Debug> Debug for Email<State>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<State: Default> Default for Email<State>

Source§

fn default() -> Email<State>

Returns the “default value” for a type. Read more
Source§

impl<'de, State> Deserialize<'de> for Email<State>

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl GetObject for Email<Get>

Source§

impl GetObject for Email<Set>

Source§

impl Object for Email<Get>

Source§

impl Object for Email<Set>

Source§

impl QueryObject for Email<Set>

Source§

impl<State> Serialize for Email<State>

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl SetObject for Email<Get>

Source§

impl SetObject for Email<Set>

Auto Trait Implementations§

§

impl<State> Freeze for Email<State>

§

impl<State> RefUnwindSafe for Email<State>
where State: RefUnwindSafe,

§

impl<State> Send for Email<State>
where State: Send,

§

impl<State> Sync for Email<State>
where State: Sync,

§

impl<State> Unpin for Email<State>
where State: Unpin,

§

impl<State> UnwindSafe for Email<State>
where State: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> ErasedDestructor for T
where T: 'static,