basic_usage/
basic_usage.rs

1use avila_cell::{EmailAddress, message::Email};
2
3fn main() {
4    println!("=== Avila Cell - Email Protocol Demo ===\n");
5
6    // Criar endereços de email
7    let from = EmailAddress::new("sender@avila.inc").unwrap();
8    let to = vec![EmailAddress::new("recipient@avila.inc").unwrap()];
9
10    println!("✓ Endereços criados:");
11    println!("  De: {}", from);
12    println!("  Para: {}", to[0]);
13
14    // Criar email
15    let mut email = Email::new(
16        from.clone(),
17        to,
18        "Teste Avila Cell".to_string(),
19        "Esta é uma mensagem de teste do ecossistema Avila!".to_string(),
20    );
21
22    // Adicionar CC
23    email.add_cc(EmailAddress::new("cc@avila.inc").unwrap());
24
25    // Adicionar header customizado
26    email.add_header("X-Avila-Version".to_string(), "0.1.0".to_string());
27
28    println!("\n✓ Email criado:");
29    println!("  Message-ID: {}", email.id);
30    println!("  Assunto: {}", email.subject);
31    println!("  CC: {:?}", email.cc);
32
33    // Converter para RFC 5322
34    let rfc5322 = email.to_rfc5322();
35
36    println!("\n✓ Formato RFC 5322:");
37    println!("{}", "=".repeat(60));
38    println!("{}", rfc5322);
39    println!("{}", "=".repeat(60));
40
41    // Validar endereços
42    println!("\n✓ Validações:");
43    println!("  {} é válido? {}", from, from.is_valid());
44
45    let invalid = EmailAddress::new("test@localhost").unwrap();
46    println!("  {} é válido? {}", invalid, invalid.is_valid());
47
48    println!("\n✅ Demo concluído com sucesso!");
49}