Quarkus MailerでTwilio SendGridのメールを送信する

Quarkus MailerでTwilio SendGridのメールを送信する

SendGridサポートエンジニアの菊田(@kikutaro_)です。先日、Javaのフレームワークの1つであるQuarkusを調べていたところ、Quarkus Mailerというエクステンションがあることを知りました。早速Twilio SendGridのメールを送ってみたので手順をまとめます。

Quarkusのプロジェクトを作成する

Quarkusはコンテナ環境の動作に最適化されたオープンソースのJavaアプリケーションフレームワークです。Red Hatが主導していて、日本語版のサイトも公開されています。

プロジェクトのセットアップはとても簡単です。https://code.quarkus.io/ にアクセスして使いたいエクステンションを選ぶと、MavenやGradleのプロジェクトを作成してくれます。

Quarkusのプロジェクトを作成

今回のブログでは、Webフォームに入力したメールアドレスに通知を送るサンプルを作りました。

Webフォームに入力したメールアドレスに通知を送るサンプル

プロジェクトはMavenを選び、エクステンションは「Quarkus Mailer」の他、Web APIを作成する「RESTEasy Reactive」を選択しました。

なお、私の開発環境はUbuntu 22.04 LTS(Jammy Jellyfish)でJDKはEclipse Temurin 19.0.1+10です。

ダウンロードしたプロジェクトを実行します。

quarkus dev

http://localhost:8080/ にアクセスして次のページが表示されたら準備完了です。

ダウンロードしたプロジェクトを実行

Quarkus Mailerによる送信

最初に、SendGridのSMTP接続情報をapplication.propertiesファイルに設定します。quarkus.mailer.passwordの部分にはSendGridのアカウントで発行したAPIキー、quarkus.mailer.fromには送信元のメールアドレスを設定してください。

quarkus.mailer.host=smtp.sendgrid.net
quarkus.mailer.port=587
quarkus.mailer.username=apikey
quarkus.mailer.password=SG.xxxxxxxxxxxxxxxxxxxx
quarkus.mailer.login=REQUIRED
quarkus.mailer.from=kikutaro@kikutaro.tech

quarkus.mailer.mock=false # In dev mode, prevent from using the mock SMTP server

実装はシンプルです。POSTリクエストのボディに指定されたメールアドレス宛てにメールを送ります。

package tech.kikutaro;

import io.quarkus.mailer.Mail;
import io.quarkus.mailer.Mailer;

import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.inject.Inject;
import org.jboss.resteasy.reactive.RestForm;

@Path("/form")
public class FormResource {
    @Inject Mailer mailer;

    @POST
    @Produces(MediaType.TEXT_PLAIN)
    public String form(@RestForm String email) {

        mailer.send(Mail.withText(email, "メルマガ購読の登録完了", "登録いただき、ありがとうございました。"));

        return "登録を受け付けました。メールをご確認ください。";
    }
}

HTMLのフォームを用意します。

 <form action="form" method="post" enctype="multipart/form-data">
    <input type="email" name="email" placeholder="Email" />
    <button>送信</button>
 </form>

メールアドレスを入力してボタンを押すと、Quarkus Mailerを使ってSendGridからのメールが送られます。

Quarkus Mailerを使ってSendGridから送られたメール

Quarkus Mailerの機能はまた別のブログで紹介していこうと思います。

アーカイブ

メールを成功の原動力に

開発者にもマーケターにも信頼されているメールサービスを利用して、
時間の節約、スケーラビリティ、メール配信に関する専門知識を手に入れましょう。