Manos Pitsidianakis
0882dbbad0
melib/Collection: put all fields behind a mutex
2020-07-23 13:23:23 +03:00
Manos Pitsidianakis
1112ef4717
melib/Collection: remove unused fields
2020-07-23 13:23:23 +03:00
Manos Pitsidianakis
fadb3634e0
melib: take MailboxHash instead of &Mailbox in fetch*()
2020-07-23 13:23:23 +03:00
Manos Pitsidianakis
9103d05617
melib: s/get/fetch in MailBackend methods
2020-07-18 12:34:13 +03:00
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
2020-07-17 22:45:25 +03:00
Manos Pitsidianakis
c6c2865a54
melib/thread/iterators: remove recursion in favor of loops
2020-07-17 13:33:40 +03:00
Manos Pitsidianakis
32f196143e
melib: add supports_search() method to MailBackend
2020-07-17 00:02:02 +03:00
Manos Pitsidianakis
d3391e96c0
mbox: send envelope payload in chunks
2020-07-16 17:59:27 +03:00
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" } }
2020-07-15 15:24:01 +03:00
Manos Pitsidianakis
08c462801d
melib/mbox: fix not updating mailbox_index on new envelope
2020-07-15 15:22:33 +03:00
Manos Pitsidianakis
e1c9967260
melib: Small documentation fixes for smtp, thread
2020-07-15 15:22:33 +03:00
Manos Pitsidianakis
4b27ae2b91
melib: Add experimental SMTP client
2020-07-15 15:22:33 +03:00
Manos Pitsidianakis
97c76cc6a1
melib/error: add ErrorKind struct
2020-07-13 21:36:55 +03:00
Manos Pitsidianakis
c7bbf7ed7e
melib: move lookup_ipv4() to connection module
2020-07-13 21:36:55 +03:00
Manos Pitsidianakis
9db6b07b71
Remove some needless clones and stuff (thanks to Clippy)
2020-07-13 21:36:55 +03:00
Manos Pitsidianakis
931863436d
imap: remove blocking imap backend, replace with async
2020-07-06 15:27:08 +03:00
Manos Pitsidianakis
b5748c247a
MailBackend: remove connect() method
2020-07-06 15:27:08 +03:00
Manos Pitsidianakis
f48343ca89
conf/accounts: add is_{async,remote} fields
2020-07-06 15:27:08 +03:00
Manos Pitsidianakis
231471fa8c
MailBackend: add is_{async,online} methods
2020-07-06 15:27:08 +03:00
Manos Pitsidianakis
94e0aa4fe7
MailBackend: change get() ret type to Result<_>
2020-07-06 15:27:08 +03:00
Manos Pitsidianakis
a7e177586a
Fix clippy lints
2020-07-06 15:27:08 +03:00
Manos Pitsidianakis
bbedeed3e3
More imap async fixes
2020-07-06 15:27:06 +03:00
Manos Pitsidianakis
391058a59c
BackendOp: add copy_to() method
2020-07-06 15:26:39 +03:00
Manos Pitsidianakis
b3876113aa
BackendOp: return future in as_bytes()
2020-07-06 15:26:39 +03:00
Manos Pitsidianakis
1ddde9ccba
BackendOp: change fetch_flags() retval to future
2020-07-06 15:26:35 +03:00
Manos Pitsidianakis
ed3e66cedf
BackendOp: remove description() method
2020-07-06 15:26:03 +03:00
Manos Pitsidianakis
e06308fed2
MailBackend: change more methods to Futures
2020-07-06 15:26:00 +03:00
Manos Pitsidianakis
03522c0298
melib: Fixup warnings in imap_async, maildir
2020-07-06 15:25:17 +03:00
Manos Pitsidianakis
6553d8ec44
imap_saync: fix max_uid invariant violation
2020-07-06 15:13:01 +03:00
Manos Pitsidianakis
adb9061adc
imap_async: add force parameter to {examine,select}_mailbox()
2020-07-06 15:13:01 +03:00
Manos Pitsidianakis
42419327f8
imap_async: add operations
2020-07-06 15:13:01 +03:00
Manos Pitsidianakis
c82367e00d
BackendOp: Change set_{flag,tag} methods
2020-07-06 15:12:33 +03:00
Manos Pitsidianakis
8c1fc031e5
BackendOp: change fetch_flags retval to Result<Flag>
2020-07-06 15:12:11 +03:00
Manos Pitsidianakis
ee10cdbcd5
Make get_async() return a Stream
2020-07-06 15:12:11 +03:00
Manos Pitsidianakis
a38764f490
Add somewhat-working async IMAP backend
2020-07-06 15:12:05 +03:00
Manos Pitsidianakis
b72a1ca6d8
WIP maildir async
2020-07-06 15:08:32 +03:00
Manos Pitsidianakis
de201b5d6c
imap: create message_sequence cache
...
Close #45 (hopefully)
2020-07-06 11:38:15 +03:00
Manos Pitsidianakis
f8b84a192c
imap: add current_mailbox enum MailboxSelection
...
Add enum to track the currently selected Mailbox in the IMAP connection
2020-07-06 11:32:03 +03:00
Manos Pitsidianakis
def3997d6f
email/parser.rs: replace "FIXME" errors
2020-06-26 21:12:57 +03:00
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.
2020-06-26 21:12:56 +03:00
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
2020-06-23 20:11:05 +03:00
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.
2020-06-23 20:11:04 +03:00
Manos Pitsidianakis
d7444a5b19
imap: recognize EXPUNGE events
2020-06-23 20:11:04 +03:00
Manos Pitsidianakis
efb06be09b
melib: return Result<_> from operation()
...
Envelope might have been deleted before main thread requests an
operation, which is a race condition.
2020-06-23 20:10:54 +03:00
Manos Pitsidianakis
d827ea1001
imap/connection.rs: debug print NO/BAD responses
2020-06-23 17:31:25 +03:00
Manos Pitsidianakis
fda947f8fb
imap.rs: fix two warnings
2020-06-23 17:31:25 +03:00
Manos Pitsidianakis
6f6f795fd5
imap: use uidnext for fetching all messages in get()
2020-06-23 12:37:27 +03:00
Manos Pitsidianakis
c08ceae97c
imap: add status_response() parser
2020-06-23 12:36:42 +03:00
Manos Pitsidianakis
c7835ccc13
imap: add mailbox_token() parser
2020-06-23 12:31:40 +03:00
Manos Pitsidianakis
c2300e8ea0
imap: update is_online flag on successful read/write
2020-06-23 12:30:10 +03:00