Commit graph

323 commits

Author SHA1 Message Date
Jon Gjengset
137f3de14f
Merge branch 'master' into mod_seq_vanished 2021-03-06 12:40:30 -05:00
Jon Gjengset
0a2f7407f2
Merge pull request #175 from mblarsen/refactor/squash-append-cmd
refactor: squash append command
2021-03-06 12:39:29 -05:00
Jon Gjengset
6935c51b2b
Merge branch 'master' into more-unilaterals 2021-03-06 12:37:52 -05:00
Milo Mirate
9b6ff70e3b
Avoid trying to FETCH an empty set of messages (#177)
Also, apply correct validation to FETCH arguments.
2021-01-12 23:30:38 -05:00
Michael Bøcker-Larsen
b2f2e297c2
docs: improve docs 2020-12-21 11:21:40 +08:00
Michael Bøcker-Larsen
8cd8a21008
refactor: rename run to finish 2020-12-21 11:21:22 +08:00
Michael Bøcker-Larsen
029da6fd52
refactor: move must_use to AppendCmd 2020-12-21 11:19:42 +08:00
Michael Bøcker-Larsen
19af971c9a
refactor: use extend instead of append
Co-authored-by: Jon Gjengset <jon@thesquareplanet.com>
2020-12-21 10:37:18 +08:00
Michael Bøcker-Larsen
74ef623fc5
docs: move flag + date documentation to AppendCmd 2020-12-20 13:09:57 +08:00
Michael Bøcker-Larsen
5053cfbb3e
feat: add 'flags' method to add multiple flags at once 2020-12-20 13:04:31 +08:00
Michael Bøcker-Larsen
b7bc842979
fix: correct lifetimes and types for append 2020-12-20 13:03:54 +08:00
Michael Bøcker-Larsen
e6341ccfc0
fix: pass session as &mut 2020-12-17 11:37:01 +08:00
Michael Bøcker-Larsen
cdf320fb0c
refactor: use AppendCmd instead of AppendOptions 2020-12-17 11:02:48 +08:00
Michael Bøcker-Larsen
24445c5c65
feat: add AppendCmd builder 2020-12-17 00:41:26 +08:00
Michael Bøcker-Larsen
469d338d5d
refactor: combine all append_* + introduce AppendOptions 2020-12-17 00:41:01 +08:00
Michael Bøcker-Larsen
ee56c8e42b
feat: allow setting sent date on APPEND (#174)
Fixes #60
2020-12-15 11:25:38 -05:00
Todd Mortimer
166a0cb6b3 Link to QRESYNC RFC section describing VANISHED vs EXPUNGE responses. 2020-12-06 15:49:11 -05:00
Todd Mortimer
a9788ad1e0 Add a Deleted type to wrap EXPUNGE and VANISHED responses.
EXPUNGE may return either a series of EXPUNGE responses each with
a single message sequence number, or a VANISHED response with a
sequence set of UIDs. This adds a wrapper enum and some associated
iterators to make it easy to handle these in the client.
2020-12-05 20:32:14 -05:00
Todd Mortimer
d381723deb Add non_exhaustive to Mailbox. 2020-11-14 16:52:03 -05:00
mordak
22dae40ab5
Fix typo in doc comment
Co-authored-by: Jon Gjengset <jon@thesquareplanet.com>
2020-11-14 16:45:50 -05:00
Todd Mortimer
c49e78b4d0 Update imap-proto and nom dependencies.
Add support for HIGHESTMODSEQ (RFC 4551) and VANISHED (RFC 7162),
which allows users to quickly synchronize to a mailbox by fetching
only changes since the last known highest mod sequence.
2020-11-11 11:37:33 -05:00
Todd Mortimer
b11b08954c Fix clippy manual_non_exhaustive lint. 2020-11-11 11:34:42 -05:00
Todd Mortimer
753e1b9db1 Fix trivial clippy warnings. 2020-11-11 11:25:21 -05:00
mordak
ae07c9f31c
Add append_with_flags (#171)
Allows a client to set flags on a new message as it is appended to a mailbox.
2020-08-23 12:02:57 -04:00
timando
5794b0f871
Re-export Result and Error types (#170) 2020-07-27 09:28:02 -04:00
Christian Krause
45a8fcf27e
Add note about server greeting to Client::new 2020-06-22 08:03:56 +02:00
sergey
a29b6f0cce Adding METADATA support 2020-05-19 15:58:43 +03:00
Remy Vuong
d6a6592420 Changed: a typo was fixed 2020-05-19 10:41:38 +02:00
Jon Gjengset
cf4aed569b
Make UnsolicitedResponse non_exhaustive
That way, as we discover additional unilateral responses in the future,
we won't have to make a breaking change to add them.
2020-05-18 14:12:36 -04:00
Jon Gjengset
0c3ce7943d
Expose unilateral mailbox flag changes
This is a backwards incompatible change, since it adds a variant to a
public enum.
2020-05-18 14:12:13 -04:00
Jon Gjengset
464c59e6c1
Expunge holds a Seq 2020-05-18 14:10:28 -04:00
Jon Gjengset
b74bfa79c6
FLAGS can be sent as unilateral response
Fixes #161 (well, the side-issue in #161).
2020-05-18 14:03:16 -04:00
Massimo Redaelli
80a0aae69d Support timing out wait on IDLE 2020-05-12 09:53:13 +02:00
Todd Mortimer
746bdfe6b9 Handle Dovecot's periodic IDLE notification messages ("OK Still here").
These messages show up at an interval controlled by Dovecot's
imap_idle_notify_interval setting, which defaults to 2 minutes.
These messages were causing the IDLE loop to exit prematurely
because it looks like a notification response from the server.
2020-04-19 10:25:41 -04:00
Todd Mortimer
41c0eb91d6 Make Display implementation independent of deprecated Error::description.
Allow use of deprecated in existing Error::description implementation to
suppress warnings.
2020-03-29 19:27:07 -04:00
Jon Gjengset
949ea3bd6b
Bump dependencies
This also pulls in imap-proto 0.11, which exposes message envelopes as
`&[u8]` instead of `&str`. This directly affects our public API.
2020-02-20 12:49:25 -05:00
Dillen Meijboom
391caf042a
Ignore server comments 2020-02-20 17:22:53 +01:00
Celti Burroughs
a4b03568be
Add imap::connect_starttls convenience function
Add a `imap::connect_starttls` convenience function, with the same
syntax as `imap::connect`, to make STARTTLS connections as easily as
IMAPS.

PR#140 removed `imap::connect_insecure` with the stated goal of
encouraging users to connect securely. With that change, users are
forced to construct their own `TcpStream`s when interacting with
non-IMAPS servers.

This change may perversely incentivise the use of insecure connections,
instead of discouraging them, as users may blindly copy-paste code
involving `Client::new` and `TcpStream`s so things "just work", without
the visual indicator of `_insecure` suggesting something is wrong.

Tangentially, [RFC 2595] encourages using STARTTLS instead of raw SSL
sockets. Ideally, we should support both options equally well.

[RFC 2595]: https://tools.ietf.org/html/rfc2595#section-7
2019-11-30 05:18:05 -07:00
sergey
18526ffb61 Add bodystructure exposing function to Fetch structure. 2019-10-29 13:55:07 +02:00
Friedel Ziegelmayer
465481de88 fix(auth): handle single + response (#145) 2019-10-21 10:49:15 -04:00
Friedel Ziegelmayer
0e5aa5c004 feat: expose read_greeting (#144)
This is sometimes needed when manually using `Client::new()`.

We enforce that the greeting is read at most once.
2019-10-21 10:13:39 -04:00
Lem
39b8087b3c
Update src/client.rs
Fix typo in fix for typo.

It's not 'data_times' or 'data_itmes'. It should be 'data_items'!

Co-Authored-By: Jon Gjengset <jon@thesquareplanet.com>
2019-10-18 20:31:34 +02:00
Lemm
e41b235387 Fix typo in documentation
data_times should be data_items for
function "status"
2019-10-18 20:23:10 +02:00
Bryce Fisher-Fleig
97671062ee (doc) Explain how and why to opt out of native_tls
Also point out the examples/rustlts.rs file for pure Rust TLS goodness
2019-09-24 08:13:17 -07:00
Bryce Fisher-Fleig
29fece1221 (security) Remove connect_insecure
In order to discourage folks from connecting securely, we're removing the
convenience method imap::connect_insecure.

Fear not\! For those who manage security in another way (aka a private network
or similar measures), it is still possible to connect without TLS by using the
imap::Client::new() method. See that method for examples of how to do this.
2019-09-24 08:13:17 -07:00
Bryce Fisher-Fleig
f15bdfb458 (feat) default feature for native_tls (aka openssl)
Establishes conditional compilation for all integration with the
native_tls crate in this crate. Since native_tls has been deeply
integrated into this crate for a long time, we want to maintain
backwards compatibility by making this feature part of the default.

For a consumer of this crate to "opt-out", including this in
cargo.toml:

```
[dependencies.imap]
version = 0.16.0        # Replace this with the correct version
default-features = false
```

See the conversation on Github for details on this approach:
https://github.com/jonhoo/rust-imap/issues/123
2019-09-24 08:13:17 -07:00
Bryce Fisher-Fleig
beb41d2f52 (feat) Provide example integration with Rustls crate
By checking this code in as an example, we can prevent bitrot as we continuously test this
in CI. It also demonstrates how to setup TLS without relying on platform specific dependencies
via native_tls crate.
2019-09-17 12:51:38 -07:00
Alexander Krotov
2221cd2e18
Update imap-proto and test that "IMAP4REV1" capability is accepted
See issue https://github.com/djc/tokio-imap/issues/54
2019-09-04 18:08:12 +03:00
avitex
c5f4495be7
Make capabilities has_str case insensitive 2019-09-04 20:25:51 +10:00
avitex
caf3990c10
Fix grammar 2019-09-03 23:41:58 +10:00