Commit Graph

545 Commits (6121f77853b1b9d75acc65b7d4d293326dec271f)

Author SHA1 Message Date
Manos Pitsidianakis 6121f77853
imap: support LIST-STATUS 4 years ago
Manos Pitsidianakis 350c8033b1
imap: use ImapLineIterator in imap_mailboxes() 4 years ago
Manos Pitsidianakis e49c293b01
imap: impl DoubleEndedIterator for ImapLineIterator 4 years ago
Manos Pitsidianakis b9343dfb32
imap: update supported capabilities 4 years ago
Manos Pitsidianakis 0882dbbad0
melib/Collection: put all fields behind a mutex 4 years ago
Manos Pitsidianakis 1112ef4717
melib/Collection: remove unused fields 4 years ago
Manos Pitsidianakis fadb3634e0
melib: take MailboxHash instead of &Mailbox in fetch*() 4 years ago
Manos Pitsidianakis 9103d05617
melib: s/get/fetch in MailBackend methods 4 years ago
Manos Pitsidianakis 0a7f283582
imap: prevent deadlock in watch::examine_updates
uid_store.mailboxes was locked before calling examine_updates, which
calls examine_mailbox() which also attempts to lock uid_store.mailboxes
4 years ago
Manos Pitsidianakis c6c2865a54
melib/thread/iterators: remove recursion in favor of loops 4 years ago
Manos Pitsidianakis 32f196143e
melib: add supports_search() method to MailBackend 4 years ago
Manos Pitsidianakis d3391e96c0
mbox: send envelope payload in chunks 4 years ago
Manos Pitsidianakis 77dc1d74bf
Add smtp client support for sending mail in UI
`mailer_command` was removed, and a new setting `send_mail` was added.

Its possible values are a string, consisting of a shell command to
execute, or settings to configure an smtp server connection. The
configuration I used for testing this is:

  [composing]
  send_mail = { hostname = "smtp.mail.tld", port = 587, auth = { type = "auto", username = "yoshi", password = { type = "command_eval", value = "gpg2 --no-tty -q -d ~/.passwords/msmtp/yoshi.gpg" } }, security = { type = "STARTTLS" } }

For local smtp server:
  [composing]
  send_mail = { hostname = "localhost", port = 25, auth = { type = "none" }, security = { type = "none" } }
4 years ago
Manos Pitsidianakis 08c462801d
melib/mbox: fix not updating mailbox_index on new envelope 4 years ago
Manos Pitsidianakis e1c9967260
melib: Small documentation fixes for smtp, thread 4 years ago
Manos Pitsidianakis 4b27ae2b91
melib: Add experimental SMTP client 4 years ago
Manos Pitsidianakis 97c76cc6a1
melib/error: add ErrorKind struct 4 years ago
Manos Pitsidianakis c7bbf7ed7e
melib: move lookup_ipv4() to connection module 4 years ago
Manos Pitsidianakis 9db6b07b71
Remove some needless clones and stuff (thanks to Clippy) 4 years ago
Manos Pitsidianakis 931863436d
imap: remove blocking imap backend, replace with async 4 years ago
Manos Pitsidianakis b5748c247a
MailBackend: remove connect() method 4 years ago
Manos Pitsidianakis f48343ca89
conf/accounts: add is_{async,remote} fields 4 years ago
Manos Pitsidianakis 231471fa8c
MailBackend: add is_{async,online} methods 4 years ago
Manos Pitsidianakis 94e0aa4fe7
MailBackend: change get() ret type to Result<_> 4 years ago
Manos Pitsidianakis a7e177586a
Fix clippy lints 4 years ago
Manos Pitsidianakis bbedeed3e3
More imap async fixes 4 years ago
Manos Pitsidianakis 391058a59c
BackendOp: add copy_to() method 4 years ago
Manos Pitsidianakis b3876113aa
BackendOp: return future in as_bytes() 4 years ago
Manos Pitsidianakis 1ddde9ccba
BackendOp: change fetch_flags() retval to future 4 years ago
Manos Pitsidianakis ed3e66cedf
BackendOp: remove description() method 4 years ago
Manos Pitsidianakis e06308fed2
MailBackend: change more methods to Futures 4 years ago
Manos Pitsidianakis 03522c0298
melib: Fixup warnings in imap_async, maildir 4 years ago
Manos Pitsidianakis 6553d8ec44
imap_saync: fix max_uid invariant violation 4 years ago
Manos Pitsidianakis adb9061adc
imap_async: add force parameter to {examine,select}_mailbox() 4 years ago
Manos Pitsidianakis 42419327f8
imap_async: add operations 4 years ago
Manos Pitsidianakis c82367e00d
BackendOp: Change set_{flag,tag} methods 4 years ago
Manos Pitsidianakis 8c1fc031e5
BackendOp: change fetch_flags retval to Result<Flag> 4 years ago
Manos Pitsidianakis ee10cdbcd5
Make get_async() return a Stream 4 years ago
Manos Pitsidianakis a38764f490
Add somewhat-working async IMAP backend 4 years ago
Manos Pitsidianakis b72a1ca6d8
WIP maildir async 4 years ago
Manos Pitsidianakis de201b5d6c
imap: create message_sequence cache
Close #45 (hopefully)
4 years ago
Manos Pitsidianakis f8b84a192c
imap: add current_mailbox enum MailboxSelection
Add enum to track the currently selected Mailbox in the IMAP connection
4 years ago
Manos Pitsidianakis def3997d6f
email/parser.rs: replace "FIXME" errors 4 years ago
Manos Pitsidianakis 91badc3960
imap: count message totals using HashSet
This way it's easy to know if a flag change in an envelope requires the
unseen total of a mailbox to change.
4 years ago
Manos Pitsidianakis 64e5d4af4f
imap/untagged.rs: properly queue refresh events
RefreshEvents where added in self.uid_store.refresh_events queue though
ImapConnection has a method add_refresh_event() that drains the queue if
possible
4 years ago
Manos Pitsidianakis 2a0ad92374
imap: don't send CRLF twice when sending LITERAL
This results in BAD IMAP errors, as a CRLF results in an empty command.
4 years ago
Manos Pitsidianakis d7444a5b19
imap: recognize EXPUNGE events 4 years ago
Manos Pitsidianakis efb06be09b
melib: return Result<_> from operation()
Envelope might have been deleted before main thread requests an
operation, which is a race condition.
4 years ago
Manos Pitsidianakis d827ea1001
imap/connection.rs: debug print NO/BAD responses 4 years ago
Manos Pitsidianakis fda947f8fb
imap.rs: fix two warnings 4 years ago