50 lines
1.7 KiB
Rust
50 lines
1.7 KiB
Rust
use lettre::{
|
|
message::{header, MultiPart, SinglePart},
|
|
Message, SmtpTransport, Transport,
|
|
};
|
|
|
|
fn main() {
|
|
// The html we want to send.
|
|
let html = r#"<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Hello from Lettre!</title>
|
|
</head>
|
|
<body>
|
|
<div style="display: flex; flex-direction: column; align-items: center;">
|
|
<h2 style="font-family: Arial, Helvetica, sans-serif;">Hello from Lettre!</h2>
|
|
<h4 style="font-family: Arial, Helvetica, sans-serif;">A mailer library for Rust</h4>
|
|
</div>
|
|
</body>
|
|
</html>"#;
|
|
|
|
// Build the message.
|
|
let email = Message::builder()
|
|
.from("NoBody <nobody@domain.tld>".parse().unwrap())
|
|
.to("Hei <hei@domain.tld>".parse().unwrap())
|
|
.subject("Hello from Lettre!")
|
|
.multipart(
|
|
MultiPart::alternative() // This is composed of two parts.
|
|
.singlepart(
|
|
SinglePart::builder()
|
|
.header(header::ContentType::TEXT_PLAIN)
|
|
.body(String::from("Hello from Lettre! A mailer library for Rust")), // Every message should have a plain text fallback.
|
|
)
|
|
.singlepart(
|
|
SinglePart::builder()
|
|
.header(header::ContentType::TEXT_HTML)
|
|
.body(String::from(html)),
|
|
),
|
|
)
|
|
.expect("failed to build email");
|
|
|
|
let mailer = SmtpTransport::builder_dangerous("localhost")
|
|
.port(7778)
|
|
.build();
|
|
|
|
// Store the message when you're ready.
|
|
mailer.send(&email).expect("failed to deliver message");
|
|
}
|