Skip to main content

Account

Struct Account 

Source
pub struct Account {
Show 35 fields pub id: String, pub kind: AccountKind, pub enabled: bool, pub address: Option<String>, pub maildir: Option<String>, pub url: Option<String>, pub site: Option<String>, pub realtime: bool, pub muted: bool, pub background: Option<bool>, pub microphone: Option<bool>, pub camera: Option<bool>, pub screen: Option<bool>, pub categories: Vec<String>, pub announced_by: Vec<String>, pub area: Option<String>, pub trusted_authserv_ids: Vec<String>, pub host: Option<String>, pub port: Option<u16>, pub security: Security, pub username: Option<String>, pub sync_days: Option<u32>, pub auth: Option<String>, pub skip_folders: Vec<String>, pub history_weeks: Option<u32>, pub priority: Priority, pub name: Option<String>, pub smtp_host: Option<String>, pub smtp_port: Option<u16>, pub smtp_security: Security, pub signature: Option<String>, pub fetch_minutes: Option<u32>, pub shield: bool, pub shield_ai: bool, pub microsoft_kind: Option<String>,
}

Fields§

§id: String§kind: AccountKind§enabled: bool

Switched off in Accounts: kept with its settings, neither synced nor shown.

§address: Option<String>§maildir: Option<String>

Where this account’s mail is kept on disk (Maildir); see Account::maildir_path.

§url: Option<String>

For portals: the address of the web mailbox.

§site: Option<String>

For portals, what the site is: “mailbox” (a secure mailbox), “chat”, “dating”, “other”.

§realtime: bool

For portals: its notifications shown at once, not at your pace.

§muted: bool

For portals: its sounds silenced.

§background: Option<bool>

For portals: kept open while the window is, to receive its notifications.

§microphone: Option<bool>

For portals: the microphone, the camera, sharing the screen, for calls; unsaid, as its kind goes (chats, video calls and dating sites have them).

§camera: Option<bool>§screen: Option<bool>§categories: Vec<String>

For portals: your own categories, any words (“Banque”, “Santé”): the list filters by them.

§announced_by: Vec<String>

For portals: the domains whose mail says something waits there (“you have a new message in your secure mailbox”); the site’s own domain when unsaid.

§area: Option<String>

“personal” for an address, or a site, of yours outside work: it stays in view in quiet time.

§trusted_authserv_ids: Vec<String>

The authserv-id your provider writes in Authentication-Results (RFC 8601).

§host: Option<String>

The IMAP server, found from the address when the account is added.

§port: Option<u16>§security: Security§username: Option<String>

The login, when it is not the address.

§sync_days: Option<u32>

How many days of mail the first sync brings.

§auth: Option<String>

How it signs in: “google” for Google’s OAuth, “microsoft” for Microsoft’s (their tokens in the keyring); a password otherwise. An older Sioul reading “microsoft” takes it for a password account, whose login then fails, said as such.

§skip_folders: Vec<String>

Folders not kept here, by their server names: they stay on the server only.

§history_weeks: Option<u32>

How far back this account’s mail reaches, in weeks, 0 for everything; the configuration’s history_weeks when unset.

§priority: Priority

How its mail ranks against the other accounts’.

§name: Option<String>

Your name as the From line shows it.

§smtp_host: Option<String>

The SMTP submission server, found from the address when first needed.

§smtp_port: Option<u16>§smtp_security: Security§signature: Option<String>

Added below what you write, in Markdown.

§fetch_minutes: Option<u32>

Minutes between two fetches of this account, when it should come more or less often than the rest.

§shield: bool

A public address that may bring hostile mail: its mail is read first, held, and summarised (shield).

§shield_ai: bool

For a shielded account, an AI may read its new mail to say its tone and topic (docs/ai.md).

§microsoft_kind: Option<String>

Mail signed in with Microsoft: “personal” (Outlook.com, Hotmail, Live, MSN) or “work” (work or school, Microsoft 365), as its sign-in found it (the ID token’s tenant). Kept apart from the sending server, so that an edit of that server cannot turn a work account personal; none (an account signed in before it was kept) counts as work until the next sign-in (docs/microsoft.md).

Implementations§

Source§

impl Account

Source

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

How far back this account’s mail reaches, in days; None for everything.

Source

pub fn imap( id: &str, address: &str, host: &str, port: u16, security: Security, username: Option<&str>, ) -> Account

A mail account fetched over IMAP; username only when it differs from the address.

Source

pub fn maildir_path(&self) -> PathBuf

The Maildir of this account: maildir if set, else ~/.local/share/sioul/mail/<id>.

Source

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

The name to log in with: username, else the address.

Source

pub fn is_microsoft(&self) -> bool

Mail signed in with Microsoft (auth = "microsoft"): its tokens in the keyring, no password (docs/microsoft.md).

Source

pub fn is_microsoft_work(&self) -> bool

Mail signed in with Microsoft that belongs to an organisation (a work or school account, Microsoft 365), or whose kind is not known: its microsoft_kind is not “personal” (the sending server is not read for it: an edit there changes nothing). Microsoft’s terms count the organisation among whom must allow its mail to go further than syncing, so the AI shield is not offered for it, agents leave it out unless you open it to them ([mcp] work_accounts), and the spam filter does not learn from it.

Source

pub fn ai_reads(&self) -> bool

Whether the AI reads this address’s new mail first (its shield, and the AI allowed): never a work or school Microsoft account’s, whatever the file says (docs/microsoft.md).

Source

pub fn port_or_default(&self) -> u16

The port to use: port, else the usual one for the encryption.

Source

pub fn smtp_port_or_default(&self) -> u16

The SMTP port to use: smtp_port, else the usual one for the encryption (RFC 8314).

Source

pub fn syncs(&self) -> bool

Whether Sioul fetches this account’s mail itself.

Source

pub fn dav( id: &str, address: &str, host: &str, url: Option<&str>, username: Option<&str>, ) -> Account

A contacts-and-calendars account: host names its keyring entry, url is where its server was found.

Source

pub fn is_dav(&self) -> bool

Whether Sioul syncs this account’s contacts and calendars.

Trait Implementations§

Source§

impl Clone for Account

Source§

fn clone(&self) -> Account

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Account

Source§

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

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

impl<'de> Deserialize<'de> for Account

Source§

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

Deserialize this value from the given Serde deserializer. Read more

Auto Trait Implementations§

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

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

Source§

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

§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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.

§

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

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
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
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. 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.
§

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

§

fn vzip(self) -> V