Quarkus MailerでTwilio SendGridのメールを送信する
- 2022年12月1日
- by 菊田 洋一
- Category: 技術ネタ
SendGridサポートエンジニアの菊田(@kikutaro_)です。先日、Javaのフレームワークの1つであるQuarkusを調べていたところ、Quarkus Mailerというエクステンションがあることを知りました。早速Twilio SendGridのメールを送ってみたので手順をまとめます。
Quarkusのプロジェクトを作成する
Quarkusはコンテナ環境の動作に最適化されたオープンソースのJavaアプリケーションフレームワークです。Red Hatが主導していて、日本語版のサイトも公開されています。
プロジェクトのセットアップはとても簡単です。https://code.quarkus.io/ にアクセスして使いたいエクステンションを選ぶと、MavenやGradleのプロジェクトを作成してくれます。
今回のブログでは、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の機能はまた別のブログで紹介していこうと思います。