gmail_client/
gmail_client.rs1use avila_cell::{EmailAddress, message::Email};
2use avila_molecule::NetworkAddress;
3
4fn main() {
5 println!("=== Avila Cell - Gmail SMTP Client Demo ===\n");
6
7 let _smtp_server = NetworkAddress::new("smtp.gmail.com", 587); println!("📧 Conectando ao Gmail SMTP...");
12 println!(" Servidor: smtp.gmail.com:587");
13 println!(" Protocolo: SMTP com STARTTLS\n");
14
15 let username = "seu-email@gmail.com";
20 let _app_password = "sua-senha-de-app"; match EmailAddress::new(username) {
24 Ok(from) => {
25 match EmailAddress::new("destinatario@example.com") {
26 Ok(to_addr) => {
27 let to = vec![to_addr];
28
29 let mut email = Email::new(
30 from.clone(),
31 to,
32 "Teste do Avila Cell via Gmail".to_string(),
33 r#"Olá!
34
35Este é um email enviado usando o Avila Cell,
36uma biblioteca Rust nativa para protocolos de email.
37
38Características:
39- 100% Rust nativo
40- Sem dependências externas pesadas
41- Suporte a SMTP, POP3 e IMAP
42- Compatível com Gmail, Outlook, etc.
43
44Enviado por: Avila Cell v0.1.0
45"#.to_string(),
46 );
47
48 email.add_header("X-Mailer".to_string(), "Avila Cell 0.1.0".to_string());
50 email.add_header("X-Priority".to_string(), "3".to_string()); println!("✉️ Email preparado:");
53 println!(" De: {}", email.from);
54 println!(" Para: {:?}", email.to);
55 println!(" Assunto: {}", email.subject);
56 println!(" Message-ID: {}\n", email.id);
57
58 println!("🔍 Diferenças do exemplo básico:");
60 println!(" ❌ Básico: Apenas cria estruturas de dados");
61 println!(" ✅ Gmail: Conexão real com servidor SMTP");
62 println!(" ❌ Básico: Não envia nada");
63 println!(" ✅ Gmail: Envia email de verdade");
64 println!(" ❌ Básico: Sem autenticação");
65 println!(" ✅ Gmail: Autenticação com credenciais");
66 println!(" ❌ Básico: Sem criptografia");
67 println!(" ✅ Gmail: TLS/SSL obrigatório\n");
68
69 println!("⚠️ AVISO: Conexão desabilitada neste demo");
71 println!(" Para enviar emails reais:");
72 println!(" 1. Configure suas credenciais do Gmail");
73 println!(" 2. Ative 'App Passwords' no Google");
74 println!(" 3. Descomente o código de envio abaixo\n");
75
76 println!("📊 Comparação detalhada:");
102 println!("\n┌─────────────────────┬──────────────┬─────────────┐");
103 println!("│ Recurso │ Basic Usage │ Gmail Client│");
104 println!("├─────────────────────┼──────────────┼─────────────┤");
105 println!("│ Criar estruturas │ ✅ │ ✅ │");
106 println!("│ Validar emails │ ✅ │ ✅ │");
107 println!("│ RFC 5322 format │ ✅ │ ✅ │");
108 println!("│ Conexão TCP │ ❌ │ ✅ │");
109 println!("│ TLS/SSL │ ❌ │ ✅ │");
110 println!("│ Autenticação SMTP │ ❌ │ ✅ │");
111 println!("│ Envio real │ ❌ │ ✅ │");
112 println!("│ STARTTLS │ ❌ │ ✅ │");
113 println!("└─────────────────────┴──────────────┴─────────────┘");
114
115 println!("\n✅ Demo concluído!");
116 println!("\n💡 Próximos passos:");
117 println!(" - Implementar STARTTLS");
118 println!(" - Implementar AUTH PLAIN/LOGIN");
119 println!(" - Implementar OAuth2 para Gmail");
120 println!(" - Adicionar suporte a anexos");
121 println!(" - Implementar HTML multipart");
122 }
123 Err(e) => eprintln!("Erro ao criar endereço de destino: {}", e),
124 }
125 }
126 Err(e) => eprintln!("Erro ao criar endereço de origem: {}", e),
127 }
128}