フレームワーク連携
Spring Boot
Sendery を使って Spring Boot アプリケーションからトランザクションメールを送信します。
インストール
<dependency>
<groupId>co.sendery</groupId>
<artifactId>sendery-spring-boot-starter</artifactId>
<version>0.1.4</version>
</dependency>動作環境
Spring Boot 4.1 と Java 17 以上が必要です。
アプリの設定
プロジェクトの API キーを作成して環境変数 SENDERY_API_KEY に保存し、application.properties に以下を追加します。
application.properties
# application.properties
sendery.api-key=${SENDERY_API_KEY}メールを送信
宛先、公開済みテンプレートのキー、変数、メールごとに固有のキーを渡して呼び出します。再試行では同じ値を使ってください。戻り値の SendReceipt から id() と status() を取得できます。
Java
import co.sendery.Sendery;
import co.sendery.SendReceipt;
import org.springframework.stereotype.Service;
import java.util.Map;
@Service
public class TemplateEmails {
private final Sendery sendery;
public TemplateEmails(Sendery sendery) {
this.sendery = sendery;
}
public SendReceipt send(String to, String template, Map<String, Object> data, String emailKey) {
return sendery.prepare(to, template, data, null, emailKey).retry(3).send();
}
}状態取得とエラー処理
sendery.get(id) で状態を取得します。API エラーは SenderyException を返します。status()、code()、errors()、retryAfter() を確認してください。呼び出しは同期型です。このスターターは Sendery のテンプレートクライアントを提供し、JavaMailSender は設定しません。
特定のバージョンを送信
公開履歴のバージョンを指定すると、テンプレートの更新後もその版を送信できます。指定しない場合は最新バージョンを使います。
Java
import co.sendery.Sendery;
import co.sendery.SendReceipt;
import org.springframework.stereotype.Service;
import java.util.Map;
@Service
public class TemplateEmails {
private final Sendery sendery;
public TemplateEmails(Sendery sendery) {
this.sendery = sendery;
}
public SendReceipt send(String to, String template, Map<String, Object> data, String emailKey) {
return sendery.prepare(to, template, data, null, emailKey).version(3).send();
}
}添付ファイル
注入された Sendery クライアントに Attachment のリストを渡します。base64への変換はSDKが行います。
最大10ファイル、合計5 MBまで送信できます。対応形式と上限は 添付ファイルのリファレンス を参照してください。
使用例
import co.sendery.Attachment;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.Map;
var file = Files.readAllBytes(Path.of("document.pdf"));
sendery.prepare(
"[email protected]",
"your-template",
Map.of("name", "Alex", "action_url", "https://example.com/start"),
null,
"your-idempotency-key",
List.of(new Attachment("document.pdf", file, "application/pdf"))
).retry().send();