Add IMAP client example demonstrating functionality

Co-authored-by: setoelkahfi <1797197+setoelkahfi@users.noreply.github.com>

copilot-swe-agent[bot] committed Oct 13, 2025 at 16:16 UTC 517bfed01a3f18076dfdd1d95910480fb9fd8ce8
1 file changed +52
examples/imap_client.rs new
+52
@@ -0,0 +1,52 @@
1 +use std::io::{Read, Write};
2 +use std::net::TcpStream;
3 +
4 +/// Simple example demonstrating IMAP client interaction
5 +fn main() -> std::io::Result<()> {
6 + println!("Connecting to IMAP server at 127.0.0.1:1143...");
7 +
8 + let mut stream = TcpStream::connect("127.0.0.1:1143")?;
9 + let mut buffer = [0; 1024];
10 +
11 + // Read greeting
12 + let n = stream.read(&mut buffer)?;
13 + println!("Server: {}", String::from_utf8_lossy(&buffer[..n]));
14 +
15 + // Send CAPABILITY command
16 + stream.write_all(b"a1 CAPABILITY\r\n")?;
17 + let n = stream.read(&mut buffer)?;
18 + println!("Server: {}", String::from_utf8_lossy(&buffer[..n]));
19 +
20 + // Login
21 + stream.write_all(b"a2 LOGIN testuser testpass\r\n")?;
22 + let n = stream.read(&mut buffer)?;
23 + println!("Server: {}", String::from_utf8_lossy(&buffer[..n]));
24 +
25 + // List mailboxes
26 + stream.write_all(b"a3 LIST \"\" \"*\"\r\n")?;
27 + let n = stream.read(&mut buffer)?;
28 + println!("Server: {}", String::from_utf8_lossy(&buffer[..n]));
29 +
30 + // Select INBOX
31 + stream.write_all(b"a4 SELECT INBOX\r\n")?;
32 + let n = stream.read(&mut buffer)?;
33 + println!("Server: {}", String::from_utf8_lossy(&buffer[..n]));
34 +
35 + // Get status of INBOX
36 + stream.write_all(b"a5 STATUS INBOX (MESSAGES RECENT UNSEEN)\r\n")?;
37 + let n = stream.read(&mut buffer)?;
38 + println!("Server: {}", String::from_utf8_lossy(&buffer[..n]));
39 +
40 + // Search all messages
41 + stream.write_all(b"a6 SEARCH ALL\r\n")?;
42 + let n = stream.read(&mut buffer)?;
43 + println!("Server: {}", String::from_utf8_lossy(&buffer[..n]));
44 +
45 + // Logout
46 + stream.write_all(b"a7 LOGOUT\r\n")?;
47 + let n = stream.read(&mut buffer)?;
48 + println!("Server: {}", String::from_utf8_lossy(&buffer[..n]));
49 +
50 + println!("IMAP session completed successfully!");
51 + Ok(())
52 +}