No description
In particular, the API for `IdleHandle` now reflects that it is only really meant for single-use. It mutably borrows the `Client`, so once `wait` returns there isn't really a good reason to keep the `IdleHandle` around (because you'll likely want to issue some other commands). There is something to be said for being able to operate on the IDLE stream, but we'll leave that for later. This also avoids some unfortunate unavoidable panics when the connection fails while the client is IDLEing. |
||
|---|---|---|
| examples | ||
| src | ||
| .gitignore | ||
| .travis.yml | ||
| appveyor.yml | ||
| Cargo.toml | ||
| LICENSE-APACHE | ||
| LICENSE-MIT | ||
| README.md | ||
rust-imap
IMAP Client for Rust
Usage
Here is a basic example of using the client. See the examples directory for more examples.
extern crate imap;
extern crate openssl;
use openssl::ssl::{SslConnectorBuilder, SslMethod};
use imap::client::Client;
// To connect to the gmail IMAP server with this you will need to allow unsecure apps access.
// See: https://support.google.com/accounts/answer/6010255?hl=en
// Look at the gmail_oauth2.rs example on how to connect to a gmail server securely.
fn main() {
let domain = "imap.gmail.com";
let port = 993;
let socket_addr = (domain, port);
let ssl_connector = SslConnectorBuilder::new(SslMethod::tls()).unwrap().build();
let mut imap_socket = Client::secure_connect(socket_addr, domain, ssl_connector).unwrap();
imap_socket.login("username", "password").unwrap();
match imap_socket.capability() {
Ok(capabilities) => {
for capability in capabilities.iter() {
println!("{}", capability);
}
}
Err(e) => println!("Error parsing capability: {}", e),
};
match imap_socket.select("INBOX") {
Ok(mailbox) => {
println!("{}", mailbox);
}
Err(e) => println!("Error selecting INBOX: {}", e),
};
match imap_socket.fetch("2", "body[text]") {
Ok(lines) => {
for line in lines.iter() {
print!("{}", line);
}
}
Err(e) => println!("Error Fetching email 2: {}", e),
};
imap_socket.logout().unwrap();
}
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.