Rustを使ってHTMLメールを送信する実装の基本的な書き方を紹介します。 テスト環境ではSendGridを利用して送信確認をしています。
cargo --version
cargo 1.60.0 (d1fd9fe 2022-03-01)
Cargo.toml
[dependencies]
lettre = "0.10.0-rc.5"
送信処理
use lettre::message::{Mailbox, MultiPart, MultiPartBuilder, SinglePart};
use lettre::transport::smtp::authentication::Credentials;
use lettre::transport::smtp::client::{Tls};
use lettre::{Message, SmtpTransport, Transport};
fn send(){
let html = "<div><p style='color:#ff0000'>HTMLメール</p></div>".to_string();
let plane = "テキストメール".to_string();
let email = Message::builder()
.from("test@example.com".parse().unwrap())
.reply_to("reply-test <test@example.com>".parse().unwrap())
.to("uiuifree <to@uiuifree.com>".parse().unwrap())
.subject("タイトル")
.multipart(MultiPart::alternative_plain_html(plane, html))
.unwrap();
let creds = Credentials::new(
"apikey".to_string(),
"SendGridのAPI KEYを入力".to_string(),
);
let tls = Tls::None;
let mailer = SmtpTransport::relay("smtp.sendgrid.net")
.unwrap()
.port(587)
.tls(tls)
.credentials(creds)
.build();
// Send the email
match mailer.send(&email) {
Ok(_) => println!("Email sent successfully!"),
Err(e) => panic!("Could not send email: {:?}", e),
}
}
これでSendgridを経由してHTMLメールを送信できるようになりました。 あとは個々にカスタマイズして実装を進めましょう。