uiuifree.com

- サイト制作のノウハウと最適化を目指して-

2022.4.26【Rust】lettreでHTMLメールを送信

【Rust】lettreでHTMLメールを送信

前提

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メールを送信できるようになりました。 あとは個々にカスタマイズして実装を進めましょう。

目次
PROFILE

このサイトを運営してるuiuifreeです。
渋谷のベンチャー企業で2年ほど新規事業を担当した後にフリーランスエンジニアにキャリア転換。
求人サイトの開発が多くエンジニア/看護師/保育士などの分野でサイトを運営しています。

アウトプット中の技術

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)