pub struct Client { /* private fields */ }Expand description
Async client for GuerrillaMail temporary email service.
Implementations§
Source§impl Client
impl Client
Sourcepub fn builder() -> ClientBuilder
pub fn builder() -> ClientBuilder
Create a builder for configuring the client.
Sourcepub async fn new() -> Result<Self>
pub async fn new() -> Result<Self>
Create a new GuerrillaMail client.
Connects to GuerrillaMail and retrieves the API token and available domains.
Examples found in repository?
examples/demo.rs (line 24)
14async fn main() -> Result<(), Box<dyn std::error::Error>> {
15 println!("📧 GuerrillaMail Rust Client - Full Demo");
16 println!("{}", "=".repeat(50));
17
18 // =========================================
19 // 1. Create client (optionally with proxy)
20 // =========================================
21 println!("\n🔌 Creating client...");
22
23 // Without proxy:
24 let client = Client::new().await?;
25
26 // With proxy (uncomment to use):
27 // let client = Client::builder().proxy("http://127.0.0.1:8080").build().await?;
28
29 // Custom configuration example (uncomment to use):
30 // let client = Client::builder()
31 // .proxy("http://127.0.0.1:8080")
32 // .danger_accept_invalid_certs(false)
33 // .user_agent("guerrillamail-demo/1.0")
34 // .ajax_url("https://www.guerrillamail.com/ajax.php")
35 // .build()
36 // .await?;
37
38 println!(" ✅ Connected to GuerrillaMail API");
39
40 // =========================================
41 // 2. Create temporary email address
42 // =========================================
43 println!("\n📬 Creating temporary email...");
44 let alias = format!("demo{}", rand::random::<u16>());
45 let email = client.create_email(&alias).await?;
46 println!(" ✅ Created: {}", email);
47
48 // =========================================
49 // 3. Poll for messages (get_messages)
50 // =========================================
51 println!("\n⏳ Waiting for messages...");
52 println!(" Send an email to: {}", email);
53 println!(" (Polling for up to 2 minutes)");
54
55 let start = std::time::Instant::now();
56 let timeout = std::time::Duration::from_secs(120);
57 let poll_interval = std::time::Duration::from_secs(5);
58
59 loop {
60 // get_messages returns basic info: id, from, subject, excerpt
61 let messages = client.get_messages(&email).await?;
62
63 if !messages.is_empty() {
64 println!("\n\n📥 Received {} message(s)!", messages.len());
65
66 for msg in &messages {
67 println!("\n{}", "-".repeat(50));
68 println!("Message ID: {}", msg.mail_id);
69 println!("From: {}", msg.mail_from);
70 println!("Subject: {}", msg.mail_subject);
71 println!(
72 "Excerpt: {}",
73 &msg.mail_excerpt[..msg.mail_excerpt.len().min(80)]
74 );
75 println!("Timestamp: {}", msg.mail_timestamp);
76
77 // =========================================
78 // 4. Fetch full email content (fetch_email)
79 // =========================================
80 println!("\n📄 Fetching full email body...");
81 match client.fetch_email(&email, &msg.mail_id).await {
82 Ok(details) => {
83 println!(" Body length: {} characters", details.mail_body.len());
84 println!(" Preview (first 500 chars):");
85 println!(" {}", "-".repeat(40));
86 let preview: String = details.mail_body.chars().take(500).collect();
87 for line in preview.lines().take(10) {
88 println!(" {}", line);
89 }
90 if details.mail_body.len() > 500 {
91 println!(" ... (truncated)");
92 }
93 }
94 Err(e) => {
95 eprintln!(" ❌ Failed to fetch: {}", e);
96 }
97 }
98 }
99 break;
100 }
101
102 if start.elapsed() >= timeout {
103 println!("\n\n⚠️ Timeout: No messages received");
104 break;
105 }
106
107 let remaining = (timeout - start.elapsed()).as_secs();
108 print!("\r Checking... {} seconds remaining ", remaining);
109 use std::io::Write;
110 std::io::stdout().flush().ok();
111
112 tokio::time::sleep(poll_interval).await;
113 }
114
115 // =========================================
116 // 5. Delete/forget email address
117 // =========================================
118 println!("\n🗑️ Cleaning up email address...");
119 match client.delete_email(&email).await {
120 Ok(true) => println!(" ✅ Email address deleted"),
121 Ok(false) => println!(" ⚠️ Deletion may have failed"),
122 Err(e) => eprintln!(" ❌ Error: {}", e),
123 }
124
125 println!("\n{}", "=".repeat(50));
126 println!("✨ Demo complete!");
127
128 Ok(())
129}Sourcepub async fn create_email(&self, alias: &str) -> Result<String>
pub async fn create_email(&self, alias: &str) -> Result<String>
Create a temporary email address.
§Arguments
alias- The email alias (part before @)
§Returns
The full email address assigned by GuerrillaMail
Examples found in repository?
examples/demo.rs (line 45)
14async fn main() -> Result<(), Box<dyn std::error::Error>> {
15 println!("📧 GuerrillaMail Rust Client - Full Demo");
16 println!("{}", "=".repeat(50));
17
18 // =========================================
19 // 1. Create client (optionally with proxy)
20 // =========================================
21 println!("\n🔌 Creating client...");
22
23 // Without proxy:
24 let client = Client::new().await?;
25
26 // With proxy (uncomment to use):
27 // let client = Client::builder().proxy("http://127.0.0.1:8080").build().await?;
28
29 // Custom configuration example (uncomment to use):
30 // let client = Client::builder()
31 // .proxy("http://127.0.0.1:8080")
32 // .danger_accept_invalid_certs(false)
33 // .user_agent("guerrillamail-demo/1.0")
34 // .ajax_url("https://www.guerrillamail.com/ajax.php")
35 // .build()
36 // .await?;
37
38 println!(" ✅ Connected to GuerrillaMail API");
39
40 // =========================================
41 // 2. Create temporary email address
42 // =========================================
43 println!("\n📬 Creating temporary email...");
44 let alias = format!("demo{}", rand::random::<u16>());
45 let email = client.create_email(&alias).await?;
46 println!(" ✅ Created: {}", email);
47
48 // =========================================
49 // 3. Poll for messages (get_messages)
50 // =========================================
51 println!("\n⏳ Waiting for messages...");
52 println!(" Send an email to: {}", email);
53 println!(" (Polling for up to 2 minutes)");
54
55 let start = std::time::Instant::now();
56 let timeout = std::time::Duration::from_secs(120);
57 let poll_interval = std::time::Duration::from_secs(5);
58
59 loop {
60 // get_messages returns basic info: id, from, subject, excerpt
61 let messages = client.get_messages(&email).await?;
62
63 if !messages.is_empty() {
64 println!("\n\n📥 Received {} message(s)!", messages.len());
65
66 for msg in &messages {
67 println!("\n{}", "-".repeat(50));
68 println!("Message ID: {}", msg.mail_id);
69 println!("From: {}", msg.mail_from);
70 println!("Subject: {}", msg.mail_subject);
71 println!(
72 "Excerpt: {}",
73 &msg.mail_excerpt[..msg.mail_excerpt.len().min(80)]
74 );
75 println!("Timestamp: {}", msg.mail_timestamp);
76
77 // =========================================
78 // 4. Fetch full email content (fetch_email)
79 // =========================================
80 println!("\n📄 Fetching full email body...");
81 match client.fetch_email(&email, &msg.mail_id).await {
82 Ok(details) => {
83 println!(" Body length: {} characters", details.mail_body.len());
84 println!(" Preview (first 500 chars):");
85 println!(" {}", "-".repeat(40));
86 let preview: String = details.mail_body.chars().take(500).collect();
87 for line in preview.lines().take(10) {
88 println!(" {}", line);
89 }
90 if details.mail_body.len() > 500 {
91 println!(" ... (truncated)");
92 }
93 }
94 Err(e) => {
95 eprintln!(" ❌ Failed to fetch: {}", e);
96 }
97 }
98 }
99 break;
100 }
101
102 if start.elapsed() >= timeout {
103 println!("\n\n⚠️ Timeout: No messages received");
104 break;
105 }
106
107 let remaining = (timeout - start.elapsed()).as_secs();
108 print!("\r Checking... {} seconds remaining ", remaining);
109 use std::io::Write;
110 std::io::stdout().flush().ok();
111
112 tokio::time::sleep(poll_interval).await;
113 }
114
115 // =========================================
116 // 5. Delete/forget email address
117 // =========================================
118 println!("\n🗑️ Cleaning up email address...");
119 match client.delete_email(&email).await {
120 Ok(true) => println!(" ✅ Email address deleted"),
121 Ok(false) => println!(" ⚠️ Deletion may have failed"),
122 Err(e) => eprintln!(" ❌ Error: {}", e),
123 }
124
125 println!("\n{}", "=".repeat(50));
126 println!("✨ Demo complete!");
127
128 Ok(())
129}Sourcepub async fn get_messages(&self, email: &str) -> Result<Vec<Message>>
pub async fn get_messages(&self, email: &str) -> Result<Vec<Message>>
Get messages for an email address.
§Arguments
email- The full email address
§Returns
A list of messages in the inbox
Examples found in repository?
examples/demo.rs (line 61)
14async fn main() -> Result<(), Box<dyn std::error::Error>> {
15 println!("📧 GuerrillaMail Rust Client - Full Demo");
16 println!("{}", "=".repeat(50));
17
18 // =========================================
19 // 1. Create client (optionally with proxy)
20 // =========================================
21 println!("\n🔌 Creating client...");
22
23 // Without proxy:
24 let client = Client::new().await?;
25
26 // With proxy (uncomment to use):
27 // let client = Client::builder().proxy("http://127.0.0.1:8080").build().await?;
28
29 // Custom configuration example (uncomment to use):
30 // let client = Client::builder()
31 // .proxy("http://127.0.0.1:8080")
32 // .danger_accept_invalid_certs(false)
33 // .user_agent("guerrillamail-demo/1.0")
34 // .ajax_url("https://www.guerrillamail.com/ajax.php")
35 // .build()
36 // .await?;
37
38 println!(" ✅ Connected to GuerrillaMail API");
39
40 // =========================================
41 // 2. Create temporary email address
42 // =========================================
43 println!("\n📬 Creating temporary email...");
44 let alias = format!("demo{}", rand::random::<u16>());
45 let email = client.create_email(&alias).await?;
46 println!(" ✅ Created: {}", email);
47
48 // =========================================
49 // 3. Poll for messages (get_messages)
50 // =========================================
51 println!("\n⏳ Waiting for messages...");
52 println!(" Send an email to: {}", email);
53 println!(" (Polling for up to 2 minutes)");
54
55 let start = std::time::Instant::now();
56 let timeout = std::time::Duration::from_secs(120);
57 let poll_interval = std::time::Duration::from_secs(5);
58
59 loop {
60 // get_messages returns basic info: id, from, subject, excerpt
61 let messages = client.get_messages(&email).await?;
62
63 if !messages.is_empty() {
64 println!("\n\n📥 Received {} message(s)!", messages.len());
65
66 for msg in &messages {
67 println!("\n{}", "-".repeat(50));
68 println!("Message ID: {}", msg.mail_id);
69 println!("From: {}", msg.mail_from);
70 println!("Subject: {}", msg.mail_subject);
71 println!(
72 "Excerpt: {}",
73 &msg.mail_excerpt[..msg.mail_excerpt.len().min(80)]
74 );
75 println!("Timestamp: {}", msg.mail_timestamp);
76
77 // =========================================
78 // 4. Fetch full email content (fetch_email)
79 // =========================================
80 println!("\n📄 Fetching full email body...");
81 match client.fetch_email(&email, &msg.mail_id).await {
82 Ok(details) => {
83 println!(" Body length: {} characters", details.mail_body.len());
84 println!(" Preview (first 500 chars):");
85 println!(" {}", "-".repeat(40));
86 let preview: String = details.mail_body.chars().take(500).collect();
87 for line in preview.lines().take(10) {
88 println!(" {}", line);
89 }
90 if details.mail_body.len() > 500 {
91 println!(" ... (truncated)");
92 }
93 }
94 Err(e) => {
95 eprintln!(" ❌ Failed to fetch: {}", e);
96 }
97 }
98 }
99 break;
100 }
101
102 if start.elapsed() >= timeout {
103 println!("\n\n⚠️ Timeout: No messages received");
104 break;
105 }
106
107 let remaining = (timeout - start.elapsed()).as_secs();
108 print!("\r Checking... {} seconds remaining ", remaining);
109 use std::io::Write;
110 std::io::stdout().flush().ok();
111
112 tokio::time::sleep(poll_interval).await;
113 }
114
115 // =========================================
116 // 5. Delete/forget email address
117 // =========================================
118 println!("\n🗑️ Cleaning up email address...");
119 match client.delete_email(&email).await {
120 Ok(true) => println!(" ✅ Email address deleted"),
121 Ok(false) => println!(" ⚠️ Deletion may have failed"),
122 Err(e) => eprintln!(" ❌ Error: {}", e),
123 }
124
125 println!("\n{}", "=".repeat(50));
126 println!("✨ Demo complete!");
127
128 Ok(())
129}Sourcepub async fn fetch_email(
&self,
email: &str,
mail_id: &str,
) -> Result<EmailDetails>
pub async fn fetch_email( &self, email: &str, mail_id: &str, ) -> Result<EmailDetails>
Fetch the full content of a specific email.
§Arguments
email- The full email addressmail_id- The message ID to fetch
§Returns
The full email details including the body
Examples found in repository?
examples/demo.rs (line 81)
14async fn main() -> Result<(), Box<dyn std::error::Error>> {
15 println!("📧 GuerrillaMail Rust Client - Full Demo");
16 println!("{}", "=".repeat(50));
17
18 // =========================================
19 // 1. Create client (optionally with proxy)
20 // =========================================
21 println!("\n🔌 Creating client...");
22
23 // Without proxy:
24 let client = Client::new().await?;
25
26 // With proxy (uncomment to use):
27 // let client = Client::builder().proxy("http://127.0.0.1:8080").build().await?;
28
29 // Custom configuration example (uncomment to use):
30 // let client = Client::builder()
31 // .proxy("http://127.0.0.1:8080")
32 // .danger_accept_invalid_certs(false)
33 // .user_agent("guerrillamail-demo/1.0")
34 // .ajax_url("https://www.guerrillamail.com/ajax.php")
35 // .build()
36 // .await?;
37
38 println!(" ✅ Connected to GuerrillaMail API");
39
40 // =========================================
41 // 2. Create temporary email address
42 // =========================================
43 println!("\n📬 Creating temporary email...");
44 let alias = format!("demo{}", rand::random::<u16>());
45 let email = client.create_email(&alias).await?;
46 println!(" ✅ Created: {}", email);
47
48 // =========================================
49 // 3. Poll for messages (get_messages)
50 // =========================================
51 println!("\n⏳ Waiting for messages...");
52 println!(" Send an email to: {}", email);
53 println!(" (Polling for up to 2 minutes)");
54
55 let start = std::time::Instant::now();
56 let timeout = std::time::Duration::from_secs(120);
57 let poll_interval = std::time::Duration::from_secs(5);
58
59 loop {
60 // get_messages returns basic info: id, from, subject, excerpt
61 let messages = client.get_messages(&email).await?;
62
63 if !messages.is_empty() {
64 println!("\n\n📥 Received {} message(s)!", messages.len());
65
66 for msg in &messages {
67 println!("\n{}", "-".repeat(50));
68 println!("Message ID: {}", msg.mail_id);
69 println!("From: {}", msg.mail_from);
70 println!("Subject: {}", msg.mail_subject);
71 println!(
72 "Excerpt: {}",
73 &msg.mail_excerpt[..msg.mail_excerpt.len().min(80)]
74 );
75 println!("Timestamp: {}", msg.mail_timestamp);
76
77 // =========================================
78 // 4. Fetch full email content (fetch_email)
79 // =========================================
80 println!("\n📄 Fetching full email body...");
81 match client.fetch_email(&email, &msg.mail_id).await {
82 Ok(details) => {
83 println!(" Body length: {} characters", details.mail_body.len());
84 println!(" Preview (first 500 chars):");
85 println!(" {}", "-".repeat(40));
86 let preview: String = details.mail_body.chars().take(500).collect();
87 for line in preview.lines().take(10) {
88 println!(" {}", line);
89 }
90 if details.mail_body.len() > 500 {
91 println!(" ... (truncated)");
92 }
93 }
94 Err(e) => {
95 eprintln!(" ❌ Failed to fetch: {}", e);
96 }
97 }
98 }
99 break;
100 }
101
102 if start.elapsed() >= timeout {
103 println!("\n\n⚠️ Timeout: No messages received");
104 break;
105 }
106
107 let remaining = (timeout - start.elapsed()).as_secs();
108 print!("\r Checking... {} seconds remaining ", remaining);
109 use std::io::Write;
110 std::io::stdout().flush().ok();
111
112 tokio::time::sleep(poll_interval).await;
113 }
114
115 // =========================================
116 // 5. Delete/forget email address
117 // =========================================
118 println!("\n🗑️ Cleaning up email address...");
119 match client.delete_email(&email).await {
120 Ok(true) => println!(" ✅ Email address deleted"),
121 Ok(false) => println!(" ⚠️ Deletion may have failed"),
122 Err(e) => eprintln!(" ❌ Error: {}", e),
123 }
124
125 println!("\n{}", "=".repeat(50));
126 println!("✨ Demo complete!");
127
128 Ok(())
129}Sourcepub async fn delete_email(&self, email: &str) -> Result<bool>
pub async fn delete_email(&self, email: &str) -> Result<bool>
Delete/forget an email address.
§Arguments
email- The full email address to delete
§Returns
true if deletion was successful
Examples found in repository?
examples/demo.rs (line 119)
14async fn main() -> Result<(), Box<dyn std::error::Error>> {
15 println!("📧 GuerrillaMail Rust Client - Full Demo");
16 println!("{}", "=".repeat(50));
17
18 // =========================================
19 // 1. Create client (optionally with proxy)
20 // =========================================
21 println!("\n🔌 Creating client...");
22
23 // Without proxy:
24 let client = Client::new().await?;
25
26 // With proxy (uncomment to use):
27 // let client = Client::builder().proxy("http://127.0.0.1:8080").build().await?;
28
29 // Custom configuration example (uncomment to use):
30 // let client = Client::builder()
31 // .proxy("http://127.0.0.1:8080")
32 // .danger_accept_invalid_certs(false)
33 // .user_agent("guerrillamail-demo/1.0")
34 // .ajax_url("https://www.guerrillamail.com/ajax.php")
35 // .build()
36 // .await?;
37
38 println!(" ✅ Connected to GuerrillaMail API");
39
40 // =========================================
41 // 2. Create temporary email address
42 // =========================================
43 println!("\n📬 Creating temporary email...");
44 let alias = format!("demo{}", rand::random::<u16>());
45 let email = client.create_email(&alias).await?;
46 println!(" ✅ Created: {}", email);
47
48 // =========================================
49 // 3. Poll for messages (get_messages)
50 // =========================================
51 println!("\n⏳ Waiting for messages...");
52 println!(" Send an email to: {}", email);
53 println!(" (Polling for up to 2 minutes)");
54
55 let start = std::time::Instant::now();
56 let timeout = std::time::Duration::from_secs(120);
57 let poll_interval = std::time::Duration::from_secs(5);
58
59 loop {
60 // get_messages returns basic info: id, from, subject, excerpt
61 let messages = client.get_messages(&email).await?;
62
63 if !messages.is_empty() {
64 println!("\n\n📥 Received {} message(s)!", messages.len());
65
66 for msg in &messages {
67 println!("\n{}", "-".repeat(50));
68 println!("Message ID: {}", msg.mail_id);
69 println!("From: {}", msg.mail_from);
70 println!("Subject: {}", msg.mail_subject);
71 println!(
72 "Excerpt: {}",
73 &msg.mail_excerpt[..msg.mail_excerpt.len().min(80)]
74 );
75 println!("Timestamp: {}", msg.mail_timestamp);
76
77 // =========================================
78 // 4. Fetch full email content (fetch_email)
79 // =========================================
80 println!("\n📄 Fetching full email body...");
81 match client.fetch_email(&email, &msg.mail_id).await {
82 Ok(details) => {
83 println!(" Body length: {} characters", details.mail_body.len());
84 println!(" Preview (first 500 chars):");
85 println!(" {}", "-".repeat(40));
86 let preview: String = details.mail_body.chars().take(500).collect();
87 for line in preview.lines().take(10) {
88 println!(" {}", line);
89 }
90 if details.mail_body.len() > 500 {
91 println!(" ... (truncated)");
92 }
93 }
94 Err(e) => {
95 eprintln!(" ❌ Failed to fetch: {}", e);
96 }
97 }
98 }
99 break;
100 }
101
102 if start.elapsed() >= timeout {
103 println!("\n\n⚠️ Timeout: No messages received");
104 break;
105 }
106
107 let remaining = (timeout - start.elapsed()).as_secs();
108 print!("\r Checking... {} seconds remaining ", remaining);
109 use std::io::Write;
110 std::io::stdout().flush().ok();
111
112 tokio::time::sleep(poll_interval).await;
113 }
114
115 // =========================================
116 // 5. Delete/forget email address
117 // =========================================
118 println!("\n🗑️ Cleaning up email address...");
119 match client.delete_email(&email).await {
120 Ok(true) => println!(" ✅ Email address deleted"),
121 Ok(false) => println!(" ⚠️ Deletion may have failed"),
122 Err(e) => eprintln!(" ❌ Error: {}", e),
123 }
124
125 println!("\n{}", "=".repeat(50));
126 println!("✨ Demo complete!");
127
128 Ok(())
129}Trait Implementations§
Auto Trait Implementations§
impl Freeze for Client
impl !RefUnwindSafe for Client
impl Send for Client
impl Sync for Client
impl Unpin for Client
impl !UnwindSafe for Client
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more