38 lines
1.3 KiB
Rust
38 lines
1.3 KiB
Rust
// This line is only to make it compile from lettre's examples folder,
|
|
// since it uses Rust 2018 crate renaming to import tokio.
|
|
// Won't be needed in user's code.
|
|
use lettre::{
|
|
message::header::ContentType, transport::smtp::authentication::Credentials, AsyncSmtpTransport,
|
|
AsyncTransport, Message, Tokio1Executor,
|
|
};
|
|
use tokio1_crate as tokio;
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
tracing_subscriber::fmt::init();
|
|
|
|
let email = Message::builder()
|
|
.from("NoBody <nobody@domain.tld>".parse().unwrap())
|
|
.reply_to("Yuin <yuin@domain.tld>".parse().unwrap())
|
|
.to("Hei <hei@domain.tld>".parse().unwrap())
|
|
.subject("Happy new async year")
|
|
.header(ContentType::TEXT_PLAIN)
|
|
.body(String::from("Be happy with async!"))
|
|
.unwrap();
|
|
|
|
let creds = Credentials::new("smtp_username".to_owned(), "smtp_password".to_owned());
|
|
|
|
// Open a remote connection to gmail using STARTTLS
|
|
let mailer: AsyncSmtpTransport<Tokio1Executor> =
|
|
AsyncSmtpTransport::<Tokio1Executor>::starttls_relay("smtp.gmail.com")
|
|
.unwrap()
|
|
.credentials(creds)
|
|
.build();
|
|
|
|
// Send the email
|
|
match mailer.send(email).await {
|
|
Ok(_) => println!("Email sent successfully!"),
|
|
Err(e) => panic!("Could not send email: {e:?}"),
|
|
}
|
|
}
|