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
+}