フレームワーク連携
Laravel
Laravel Mail と Notifications を使い、Sendery のテンプレートでトランザクションメールを送信します。
composer require sendery/laravel:^0.1動作環境
Laravel 13、PHP 8.3 以上と cURL 拡張が必要です。
アプリの設定
name と action_url を使う welcome テンプレートを公開し、プロジェクトの API キーを作成します。サーバーの環境変数 SENDERY_API_KEY に保存してください。 以下を .env に追加します。sendery メーラーは自動登録されます。Laravel の検証に MAIL_FROM_ADDRESS が必要ですが、実際の送信者は Sendery のプロジェクト設定を使用します。
SENDERY_API_KEY=your_project_api_key
[email protected]
MAIL_FROM_NAME="Your app"メールを送信
sendery メーラーで TemplateMail を使います。宛先は 1 件で、公開済みテンプレートを指定します。HTML メール、添付ファイル、cc、bcc には対応していません。
use Illuminate\Support\Facades\Mail;
use Sendery\Laravel\TemplateMail;
Mail::mailer('sendery')->to('[email protected]')->send(
new TemplateMail('welcome', [
'name' => 'Alex',
'action_url' => 'https://example.com/start',
])
);キューで送信
send() の代わりに queue() を使います。Laravel のキュー接続を設定してワーカーを起動してください。同じキュー内のメールを再試行すると、キーと変数が保持されます。
use Illuminate\Support\Facades\Mail;
use Sendery\Laravel\TemplateMail;
Mail::mailer('sendery')->to('[email protected]')->queue(
new TemplateMail('welcome', [
'name' => 'Alex',
'action_url' => 'https://example.com/start',
])
);パスワード再設定とメール認証
name と action_url を使う password-reset と email-verification テンプレートを公開します。AppServiceProvider::boot() に以下を追加すると、Laravel 標準の再設定・認証通知を Sendery で送信します。独自の通知サブクラスは対象外です。既定ではテンプレートの既定言語を使用します。通知の言語を選ぶには useNotificationLocale: true を渡し、使用する言語を公開してください。
// app/Providers/AppServiceProvider.php
use Sendery\Laravel\Sendery;
public function boot(): void
{
Sendery::useBuiltInNotifications();
}独自の通知
via() で SenderyChannel::class を返し、toSendery() を定義します。通知の作成時に元のイベントキーと変数を渡します。公開済み言語を選ぶには locale も返してください。通知先のメールルートは 1 件のアドレスを返す必要があります。
use Illuminate\Notifications\Notification;
use Sendery\Laravel\SenderyChannel;
class OrderConfirmation extends Notification
{
public function __construct(
private string $eventKey,
private array $variables,
) {}
public function via(object $notifiable): array
{
return [SenderyChannel::class];
}
public function toSendery(object $notifiable): array
{
return [
'template' => 'order-confirmation',
'data' => $this->variables,
'idempotency_key' => $this->eventKey,
];
}
}エラー処理
メーラーは Symfony の TransportException を返します。API エラーでは直前の例外が Sendery\ApiException になります。通知チャネルは Sendery\ApiException を直接返します。どちらも自動再試行しないため、一時的なエラーには元のキーとデータで再試行してください。