/* * Copyright Stalwart Labs Ltd. See the COPYING * file at the top-level directory of this distribution. * * Licensed under the Apache License, Version 2.0 or the MIT license * , at your * option. This file may not be copied, modified, or distributed * except according to those terms. */ use mail_auth::{ common::crypto::{RsaKey, Sha256}, dkim::DkimSigner, }; use mail_builder::MessageBuilder; use mail_send::SmtpClientBuilder; const TEST_KEY: &str = r#"-----BEGIN RSA PRIVATE KEY----- MIICXwIBAAKBgQDwIRP/UC3SBsEmGqZ9ZJW3/DkMoGeLnQg1fWn7/zYtIxN2SnFC jxOCKG9v3b4jYfcTNh5ijSsq631uBItLa7od+v/RtdC2UzJ1lWT947qR+Rcac2gb to/NMqJ0fzfVjH4OuKhitdY9tf6mcwGjaNBcWToIMmPSPDdQPNUYckcQ2QIDAQAB AoGBALmn+XwWk7akvkUlqb+dOxyLB9i5VBVfje89Teolwc9YJT36BGN/l4e0l6QX /1//6DWUTB3KI6wFcm7TWJcxbS0tcKZX7FsJvUz1SbQnkS54DJck1EZO/BLa5ckJ gAYIaqlA9C0ZwM6i58lLlPadX/rtHb7pWzeNcZHjKrjM461ZAkEA+itss2nRlmyO n1/5yDyCluST4dQfO8kAB3toSEVc7DeFeDhnC1mZdjASZNvdHS4gbLIA1hUGEF9m 3hKsGUMMPwJBAPW5v/U+AWTADFCS22t72NUurgzeAbzb1HWMqO4y4+9Hpjk5wvL/ eVYizyuce3/fGke7aRYw/ADKygMJdW8H/OcCQQDz5OQb4j2QDpPZc0Nc4QlbvMsj 7p7otWRO5xRa6SzXqqV3+F0VpqvDmshEBkoCydaYwc2o6WQ5EBmExeV8124XAkEA qZzGsIxVP+sEVRWZmW6KNFSdVUpk3qzK0Tz/WjQMe5z0UunY9Ax9/4PVhp/j61bf eAYXunajbBSOLlx4D+TunwJBANkPI5S9iylsbLs6NkaMHV6k5ioHBBmgCak95JGX GMot/L2x0IYyMLAz6oLWh2hm7zwtb0CgOrPo1ke44hFYnfc= -----END RSA PRIVATE KEY-----"#; #[tokio::main] async fn main() { // Build a simple text message with a single attachment // More examples of how to build messages available at // https://github.com/stalwartlabs/mail-builder/tree/main/examples let message = MessageBuilder::new() .from(("John Doe", "john@example.com")) .to("jane@example.com") .subject("Howdy!") .text_body("These pretzels are making me thirsty.") .attachment("image/png", "pretzels.png", [1, 2, 3, 4].as_ref()); // Sign an e-mail message using RSA-SHA256 let pk_rsa = RsaKey::::from_rsa_pem(TEST_KEY).unwrap(); let signer = DkimSigner::from_key(pk_rsa) .domain("example.com") .selector("default") .headers(["From", "To", "Subject"]) .expiration(60 * 60 * 7); // Number of seconds before this signature expires (optional) // Connect to an SMTP relay server over TLS. // Signs each message with the configured DKIM signer. SmtpClientBuilder::new("smtp.gmail.com", 465) .connect() .await .unwrap() .send_signed(message, &signer) .await .unwrap(); }