Doc

2023年06月02日更新

/編集

メール送信

Resend を使う。

インストール
pnpm add resend
インストール
pnpm add resend
.env.local
RESEND_API_KEY=xxx
EMAIL_FROM=xxx # 送信元メールアドレス(オプション)
EMAIL_TO=xxx # 送信先メールアドレス(オプション)
.env.local
RESEND_API_KEY=xxx
EMAIL_FROM=xxx # 送信元メールアドレス(オプション)
EMAIL_TO=xxx # 送信先メールアドレス(オプション)

メールテンプレートを作成

export default function EmailTemplate({
  name,
  product,
}: {
  name: string;
  product: string;
}) {
  return (
    <div>
      <div>
        <h1>ようこそ, {name}さん!</h1>
        <p>{product}についてご連絡いただきありがとうございます.</p>
      </div>
    </div>
  );
}

送信用 API を作成

import EmailTemplate from '@/app/_email-templates/email-template';
import { NextResponse } from 'next/server';
import { Resend } from 'resend';

const resend = new Resend(process.env.RESEND_API_KEY);

export async function GET() {
  try {
    const data = await resend.sendEmail({
      from: process.env.EMAIL_FROM || '',
      to: process.env.EMAIL_TO || '',
      subject: 'hello world',
      react: EmailTemplate({ name: '太郎', product: 'テスト' }),
    });

    return NextResponse.json(data);
  } catch (error) {
    console.error(error);
    return NextResponse.json({ error });
  }
}

送信元のドメインを設定画面から取得した情報でドメインサービスの DNS 設定を行い、Verify ボタンをクリック。正常に設定が終わればメールが送れるようになる。DNS 設定後しばらく待つ必要がある点に注意。

メール送信

'use client';

import { Button } from '@/app/_components/button';
import React from 'react';

export default function SendEmailDemo() {
  const sendEmail = () => {
    fetch('/api/send', {
      method: 'GET',
    }).then(() => {
      alert('send mail');
    });
  };

  return (
    <div>
      <Button onClick={sendEmail}>メール送信</Button>
    </div>
  );
}

メールテンプレートは React Email を推奨。

参考リンク

関連ツイート

これ本当に求めてたやつ。かなり今どきなメールAPI ◆ 無料プランあり ◆ Reactでメールテンプレート作れる❤️ → ローカルプロジェクト内にReactでテンプレート作るDX ◆ Next.js(App)などのモダンフレームワークに最適化 SendGrid の代替 resend.com/home

Image
Image
Image
Image
333
Reply