E-Mail ist eine kritische Komponente moderner Webanwendungen, die für alles verwendet wird, von der Benutzeranmeldung und Benachrichtigungen bis hin zu Passwort-Rücksetzungen und Marketingkampagnen. Der Aufbau und die Verwaltung einer zuverlässigen E-Mail-Versandinfrastruktur kann jedoch komplex und zeitaufwändig sein. Hier kommen E-Mail-API-Dienste wie Resend ins Spiel.
Resend bietet eine entwicklerfreundliche Plattform, die den Prozess des Versendens von Transaktions- und Marketing-E-Mails vereinfachen soll. Es bietet robuste APIs, detaillierte Analysen und eine hervorragende Zustellbarkeit, sodass sich Entwickler auf den Aufbau ihrer Anwendungen konzentrieren können, anstatt sich um die E-Mail-Infrastruktur kümmern zu müssen.
Dieser umfassende Leitfaden führt Sie durch alles, was Sie wissen müssen, um mit der Resend-API zu beginnen, vom Verständnis ihrer Kernkonzepte und Preise bis hin zur Integration in verschiedene beliebte Frameworks und Plattformen.
Want an integrated, All-in-One platform for your Developer Team to work together with maximum productivity?
Apidog delivers all your demans, and replaces Postman at a much more affordable price!
Was ist Resend?

Resend ist eine E-Mail-API-Plattform, die für Entwickler entwickelt wurde. Ziel ist es, im Vergleich zu älteren E-Mail-Dienstanbietern (ESPs) ein besseres Entwicklererlebnis zu bieten. Zu den wichtigsten Funktionen gehören:
- Moderne API: Eine saubere, RESTful-API, die sich einfach in jede Anwendung integrieren lässt.
- Hohe Zustellbarkeit: Konzentriert sich darauf, dass Ihre E-Mails den Posteingang und nicht den Spam-Ordner erreichen, durch Funktionen wie benutzerdefinierte Domänenüberprüfung (DKIM, SPF, DMARC), dedizierte IPs (als Add-on) und automatische Verwaltung der Unterdrückungsliste.
- Framework-Integrationen: Bietet offizielle SDKs und Anleitungen für beliebte Frameworks wie Node.js, Next.js, Python, Ruby, PHP, Go und mehr.
- React Email Integration: Lässt sich nahtlos in React Email integrieren, sodass Sie mithilfe von React-Komponenten schöne, responsive E-Mail-Vorlagen erstellen können.
- Webhooks: Bietet Echtzeitbenachrichtigungen über E-Mail-Ereignisse wie Zustellung, Bounces, Öffnungen, Klicks und Spam-Beschwerden.
- Detaillierte Analysen: Bietet Einblicke in die E-Mail-Performance über ein benutzerfreundliches Dashboard.
- Entwicklerfokus: Entwickelt mit Blick auf Entwickler und bietet klare Dokumentation, hilfreiche SDKs und Tools wie Test-E-Mails für eine einfachere Entwicklung und Fehlerbehebung.
Resend positioniert sich als eine modernere, entwicklerorientierte Alternative zu etablierten Akteuren wie SendGrid, Mailgun oder AWS SES und konzentriert sich auf Benutzerfreundlichkeit, Zuverlässigkeit und die gute Integration in moderne Webentwicklungs-Workflows.
Wie ist die Preisgestaltung von Resend?

Resend bietet eine gestaffelte Preisstruktur, die auf der Anzahl der pro Monat gesendeten E-Mails basiert, mit separaten Überlegungen für Transaktions- und Marketing-E-Mails (obwohl die Preisseite in erster Linie Transaktionspläne detailliert beschreibt).
Hier ist eine Aufschlüsselung ihrer Transaktions-E-Mail-Pläne (zum Zeitpunkt des Verfassens):
Free Plan:
- Kosten: $0 / Monat
- E-Mails: Bis zu 3.000 E-Mails pro Monat
- Tägliches Limit: 100 E-Mails pro Tag
- Domains: 1 benutzerdefinierte Domain
- Datenaufbewahrung: 1 Tag
- Support: Ticket-Support
- Hauptmerkmale: RESTful API, SMTP Relay, SDKs, Open/Link Tracking, React Email Integration, Automatic Suppression List, DKIM/SPF/DMARC Authentication, 1 Webhook Endpoint.
- Einschränkungen: Kein Single Sign-On (SSO), keine dedizierten IPs, begrenzte Domains und tägliches Senden.
Pro Plan:
- Kosten: $20 / Monat
- E-Mails: Bis zu 50.000 E-Mails pro Monat (mit Überziehungsgebühren, die darüber hinaus anfallen)
- Tägliches Limit: Kein tägliches Limit
- Domains: 10 benutzerdefinierte Domains
- Datenaufbewahrung: 3 Tage
- Support: Ticket-Support
- Hauptmerkmale: Alle Funktionen des Free Plans, plus SSO, 10 Webhook-Endpunkte.
- Einschränkungen: Keine dedizierten IPs enthalten (als Add-on später verfügbar), kein Slack-Support.
Scale Plan:
- Kosten: $90 / Monat
- E-Mails: Bis zu 100.000 E-Mails pro Monat (mit Überziehungsgebühren)
- Tägliches Limit: Kein tägliches Limit
- Domains: 1.000 benutzerdefinierte Domains
- Datenaufbewahrung: 7 Tage
- Support: Slack & Ticket-Support
- Hauptmerkmale: Alle Funktionen des Pro Plans, plus dedizierte IP als Add-on verfügbar ($30/Monat, erfordert >500 E-Mails/Tag).
- Einschränkungen: Dedizierte IPs sind ein Add-on.
Enterprise Plan:
- Kosten: Benutzerdefinierte Preise
- E-Mails: Benutzerdefiniertes Volumen
- Tägliches Limit: Kein tägliches Limit
- Domains: Flexibel
- Datenaufbewahrung: Flexibel
- Support: Priority Support, Urgent Response SLA, Deliverability Expertise
- Hauptmerkmale: Alle Funktionen des Scale Plans, plus Dedicated IP Warming, Deliverability Insights, Flexible Webhooks, SSO inklusive.
Wichtige Überlegungen:
- Überziehung: Wenn Sie mehr E-Mails senden, als Ihr Plan zulässt, fallen zusätzliche Kosten pro E-Mail an.
- Dedizierte IPs: Als Add-on für die Scale- und Enterprise-Pläne gegen eine zusätzliche monatliche Gebühr verfügbar, empfohlen für Absender mit hohem Volumen, die sich um den Ruf der gemeinsam genutzten IP kümmern.
- Datenaufbewahrung: Die Dauer, für die Resend Protokolle und Details zu Ihren gesendeten E-Mails speichert, variiert je nach Plan.
- Marketing-E-Mails: Die Preisseite hat einen Schalter für Marketing-E-Mails, was darauf hindeutet, dass möglicherweise andere Pläne oder Preisstrukturen gelten, aber die Details konzentrierten sich in den gescrapten Inhalten auf Transaktions-E-Mails. Überprüfen Sie die Resend-Website auf die aktuellsten Preise für Marketing-E-Mails.
Der Free Plan ist großzügig genug für kleine Projekte oder Testzwecke. Die Pro- und Scale-Pläne richten sich an wachsende Anwendungen mit steigenden E-Mail-Volumina und Funktionsanforderungen. Der Enterprise-Plan bietet maßgeschneiderte Lösungen für groß angelegte Operationen.
Erste Schritte mit Resend
Bevor Sie E-Mails senden können, müssen Sie Ihr Resend-Konto einrichten und Ihre Versanddomäne konfigurieren.
1. Registrieren und API-Schlüssel erstellen
- Gehen Sie zur Resend-Website und melden Sie sich für ein Konto an.
- Navigieren Sie zum Abschnitt API-Schlüssel in Ihrem Resend-Dashboard (https://resend.com/api-keys).
- Klicken Sie auf API-Schlüssel erstellen.
- Geben Sie Ihrem API-Schlüssel einen beschreibenden Namen (z. B.
my-app-key
). - Wählen Sie die Berechtigungsstufe:
- Vollzugriff: Ermöglicht alle API-Aktionen (Erstellen, Löschen, Abrufen, Aktualisieren von Ressourcen). Mit Vorsicht verwenden, in der Regel nur für Backend-Verwaltungsaufgaben erforderlich.
- Zugriff zum Senden: Ermöglicht nur das Senden von E-Mails. Dies ist die empfohlene Berechtigung für die Sendelogik Ihrer Anwendung. Sie können diesen Schlüssel optional so einschränken, dass er nur von einer bestimmten verifizierten Domäne aus senden kann.
- Klicken Sie auf Erstellen.
- Wichtig: Resend zeigt Ihnen den API-Schlüssel nur einmal an. Kopieren Sie ihn sofort und speichern Sie ihn sicher (z. B. in einer Umgebungsvariablen, einem Secrets Manager). Übertragen Sie ihn nicht direkt in Ihre Codebasis.
2. Überprüfen Sie Ihre Domain
Um E-Mails zu senden, die professionell aussehen und Spam-Filter vermeiden, müssen Sie eine Domain verifizieren, die Ihnen gehört. Das Senden von nicht verifizierten Domains oder Standardadressen wie onboarding@resend.dev
ist nur für erste Tests geeignet.
- Gehen Sie zum Abschnitt Domains in Ihrem Resend-Dashboard (https://resend.com/domains).
- Klicken Sie auf Domain hinzufügen und geben Sie die Domain ein, von der Sie E-Mails senden möchten (z. B.
yourcompany.com
). - Wählen Sie Ihren DNS-Anbieter aus der Liste aus oder wählen Sie „Andere“.
- Resend stellt Ihnen DNS-Einträge (normalerweise MX, TXT für SPF und CNAME/TXT für DKIM) zur Verfügung, die Sie den DNS-Einstellungen Ihrer Domain hinzufügen müssen.
- SPF (Sender Policy Framework): Gibt an, welche Mailserver berechtigt sind, E-Mails im Namen Ihrer Domain zu senden.
- DKIM (DomainKeys Identified Mail): Fügt E-Mails eine digitale Signatur hinzu, sodass empfangende Server überprüfen können, ob die E-Mail nicht manipuliert wurde und von einem autorisierten Server stammt.
- Melden Sie sich bei Ihrem Domain-Registrar oder DNS-Anbieter (z. B. GoDaddy, Cloudflare, Namecheap) an und fügen Sie die von Resend bereitgestellten Datensätze hinzu.
- DNS-Änderungen können einige Zeit dauern, bis sie sich ausbreiten (Minuten bis Stunden, manchmal bis zu 48 Stunden).
- Sobald die Datensätze hinzugefügt wurden, gehen Sie zurück zum Resend-Domains-Dashboard und klicken Sie auf die Schaltfläche Verifizieren neben Ihrer Domain. Resend prüft, ob die DNS-Einträge korrekt eingerichtet sind. Nach der Überprüfung wird der Status aktualisiert, und Sie können damit beginnen, E-Mails von Adressen zu senden, die dieser Domain zugeordnet sind (z. B.
support@yourcompany.com
,noreply@yourcompany.com
).
3. Test-E-Mails senden
Während der Entwicklung ist es entscheidend, das Senden von E-Mails zu testen, ohne den Ruf Ihrer Domain zu beeinträchtigen oder versehentlich an echte Benutzer zu senden. Resend stellt spezielle E-Mail-Adressen zum Testen verschiedener Szenarien bereit:
- Test Delivered: Senden Sie an
delivered@resend.dev
. Dies simuliert eine erfolgreich zugestellte E-Mail. - Test Bounced: Senden Sie an
bounced@resend.dev
. Dies simuliert einen Hard Bounce (z. B. die Empfängeradresse existiert nicht) und löst ein Bounce-Ereignis aus. - Test Marked as Spam: Senden Sie an
complained@resend.dev
. Dies simuliert, dass ein Empfänger Ihre E-Mail als Spam markiert und ein Beschwerdeereignis auslöst.
Mithilfe dieser Testadressen können Sie Ihre Integration überprüfen und Webhook-Handler für Bounce- und Beschwerdeereignisse sicher testen.
Integration von Resend mit Frameworks
Resend bietet offizielle SDKs und unkomplizierte Integrationsmethoden für verschiedene Sprachen und Frameworks. Wir werden einige beliebte Beispiele basierend auf der bereitgestellten Dokumentation behandeln. Das Kernkonzept beinhaltet in der Regel:
- Installieren des Resend SDK (falls verfügbar) oder Verwenden von Standard-HTTP-Anforderungen.
- Initialisieren des Resend-Clients mit Ihrem API-Schlüssel (sicher geladen, normalerweise aus Umgebungsvariablen).
- Aufrufen der Methode
emails.send
(oder einer entsprechenden Methode) mit Parametern wiefrom
,to
,subject
undhtml
oderreact
.
Senden mit Next.js
Next.js ist ein beliebtes React-Framework. Resend lässt sich gut integrieren, insbesondere mit React Email.
1. Installieren:
npm install resend
# or
yarn add resend
# or
pnpm add resend
2. E-Mail-Vorlage erstellen (optional, aber empfohlen): Verwenden Sie React Email oder erstellen Sie eine einfache React-Komponente für Ihren E-Mail-Text.
// components/email-template.tsx
import * as React from 'react';
interface EmailTemplateProps {
firstName: string;
}
export const EmailTemplate: React.FC<Readonly<EmailTemplateProps>> = ({
firstName,
}) => (
<div>
<h1>Welcome, {firstName}!</h1>
</div>
);
3. API-Route erstellen: Erstellen Sie einen API-Routenhändler, um die E-Mail zu senden.
- App Router:
app/api/send/route.ts
- Pages Router:
pages/api/send.ts
// app/api/send/route.ts (App Router Example)
import { EmailTemplate } from '../../../components/email-template'; // Adjust path if needed
import { Resend } from 'resend';
// Ensure RESEND_API_KEY is set in your .env.local
const resend = new Resend(process.env.RESEND_API_KEY);
export async function POST() {
try {
const { data, error } = await resend.emails.send({
from: 'Your Name <you@yourverifieddomain.com>', // Use your verified domain
to: ['delivered@resend.dev'], // Replace with recipient or test address
subject: 'Hello from Resend and Next.js!',
react: EmailTemplate({ firstName: 'Test' }), // Pass props to your template
// Alternatively, use `html`:
// html: '<strong>It works!</strong>'
});
if (error) {
return Response.json({ error }, { status: 400 });
}
return Response.json(data);
} catch (error) {
return Response.json({ error }, { status: 500 });
}
}
// pages/api/send.ts (Pages Router Example - adapt imports/response)
// import type { NextApiRequest, NextApiResponse } from 'next';
// import { EmailTemplate } from '../../components/EmailTemplate';
// import { Resend } from 'resend';
//
// const resend = new Resend(process.env.RESEND_API_KEY);
//
// export default async (req: NextApiRequest, res: NextApiResponse) => {
// try { // Added try...catch for better error handling
// const { data, error } = await resend.emails.send({
// from: 'Your Name <you@yourverifieddomain.com>',
// to: ['delivered@resend.dev'],
// subject: 'Hello world',
// react: EmailTemplate({ firstName: 'John' }),
// });
//
// if (error) {
// return res.status(400).json(error);
// }
//
// res.status(200).json(data);
// } catch (e) {
// res.status(500).json({ error: 'Internal Server Error' });
// }
// };
4. Auslösen: Rufen Sie diesen API-Endpunkt von Ihrem Frontend aus (z. B. nach einer Formularübermittlung) mithilfe von fetch
oder einer Bibliothek wie axios
auf. Denken Sie daran, Platzhalterwerte durch Ihre tatsächliche verifizierte Domain und Empfängerlisten zu ersetzen.
Senden mit Astro
Astro ist ein moderner statischer Site-Builder, der auch serverseitiges Rendering (SSR) unterstützt.
1. Resend installieren:
npm install resend
# or
yarn add resend
# or
pnpm add resend
2. SSR-Adapter installieren: Astro benötigt einen SSR-Adapter, um serverseitigen Code bei Bedarf auszuführen. Installieren Sie einen, der für Ihr Bereitstellungsziel geeignet ist (z. B. @astrojs/node
, @astrojs/vercel
, @astrojs/cloudflare
).
npx astro add node # Example for Node.js adapter
Befolgen Sie die Einrichtungsanweisungen des Adapters in Ihrer astro.config.mjs
.
3. API-Schlüssel hinzufügen: Speichern Sie Ihren RESEND_API_KEY
in Ihrer .env
-Datei.
4. Astro-Aktion erstellen: Verwenden Sie Astro-Aktionen (experimentelles Feature zum Zeitpunkt des Schreibens, überprüfen Sie die Astro-Dokumente auf den aktuellen Status) oder Standard-API-Endpunkte.
// src/actions/index.ts (Using Astro Actions)
import { ActionError, defineAction, z } from 'astro:actions';
import { Resend } from 'resend';
// Ensure RESEND_API_KEY is available via import.meta.env
const resend = new Resend(import.meta.env.RESEND_API_KEY);
export const server = {
send: defineAction({
// Example: Define input validation if needed
// input: z.object({ email: z.string().email() }),
handler: async (/* { email } - if using input */) => {
try { // Added try...catch
const { data, error } = await resend.emails.send({
from: 'Your Name <you@yourverifieddomain.com>',
to: ['delivered@resend.dev'], // Replace with recipient
subject: 'Hello from Resend and Astro!',
html: '<strong>Astro works!</strong>',
// You can also use React templates if you set up React in Astro
// react: <YourAstroCompatibleReactEmail firstName="Astro" />
});
if (error) {
console.error("Resend Error:", error); // Log error
// Throwing ActionError helps Astro handle errors gracefully
throw new ActionError({
code: 'BAD_REQUEST', // Or be more specific based on error
message: error.message || 'Failed to send email',
});
}
return data; // Return success data
} catch (e) {
console.error("Handler Error:", e);
// Re-throw or throw a new ActionError
throw new ActionError({
code: 'INTERNAL_SERVER_ERROR',
message: 'An unexpected error occurred.',
});
}
},
}),
};
// Alternative: API Endpoint (e.g., src/pages/api/send.ts)
// import type { APIRoute } from 'astro';
// import { Resend } from 'resend';
//
// const resend = new Resend(import.meta.env.RESEND_API_KEY);
//
// export const POST: APIRoute = async ({ request }) => {
// // const body = await request.json(); // If data comes from request body
// try {
// const { data, error } = await resend.emails.send({ /* ... email params ... */ });
// if (error) {
// return new Response(JSON.stringify(error), { status: 400 });
// }
// return new Response(JSON.stringify(data), { status: 200 });
// } catch (e) {
// return new Response(JSON.stringify({ message: "Server Error"}), { status: 500 });
// }
// }
5. Auslösen: Rufen Sie die Aktion oder den Endpunkt von Ihren Astro-Komponenten oder -Seiten aus auf, typischerweise innerhalb eines Formularübermittlungshandlers.
Senden mit Bun
Bun ist eine schnelle JavaScript-Laufzeitumgebung mit einem integrierten Bundler, Transpiler, Task Runner und npm-Client.
1. Installieren:
bun install resend
2. E-Mail-Vorlage erstellen (optional): Ähnlich wie bei Next.js können Sie eine .tsx
-Datei für Ihre React-E-Mail-Vorlage erstellen.
// email-template.tsx
import * as React from 'react';
interface EmailTemplateProps {
firstName: string;
}
export const EmailTemplate: React.FC<Readonly<EmailTemplateProps>> = ({
firstName,
}) => (
<div>
<h1>Welcome, {firstName}!</h1>
</div>
);
3. Bun-Server-Skript erstellen: Erstellen Sie ein Skript (z. B. index.tsx
), um einen einfachen HTTP-Server mit Bun auszuführen.
// index.tsx
import { Resend } from 'resend';
import { EmailTemplate } from './email-template'; // Assuming it's in the same dir
// Load API key from environment variables
const resendApiKey = process.env.RESEND_API_KEY;
if (!resendApiKey) {
console.error("Error: RESEND_API_KEY environment variable not set.");
process.exit(1); // Exit if key is missing
}
const resend = new Resend(resendApiKey);
const server = Bun.serve({
port: 3000,
async fetch(req) { // Added 'req' argument
// Optional: Check request method, path, etc.
// if (new URL(req.url).pathname !== '/send') {
// return new Response("Not Found", { status: 404 });
// }
// if (req.method !== 'POST') {
// return new Response("Method Not Allowed", { status: 405 });
// }
try {
const { data, error } = await resend.emails.send({
from: 'Your Name <you@yourverifieddomain.com>',
to: ['delivered@resend.dev'],
subject: 'Hello from Resend and Bun!',
react: EmailTemplate({ firstName: 'Bun User' }),
// Or use html: '<strong>Bun works!</strong>'
});
if (error) {
console.error("Resend Error:", error);
// Return a proper JSON error response
return new Response(JSON.stringify({ error: error.message || 'Failed to send email' }), {
status: 500, // Or 400 depending on error type
headers: { 'Content-Type': 'application/json' },
});
}
// Return success response
return new Response(JSON.stringify(data), {
status: 200,
headers: { 'Content-Type': 'application/json' },
});
} catch (e) {
console.error("Server Error:", e);
return new Response(JSON.stringify({ error: 'Internal Server Error' }), {
status: 500,
headers: { 'Content-Type': 'application/json' },
});
}
},
error(error) { // Added basic error handler for the server itself
return new Response(`<pre>${error}\\\\\\\\n${error.stack}</pre>`, {
headers: { "Content-Type": "text/html" },
});
},
});
console.log(`Listening on <http://localhost>:${server.port} ...`);
4. Ausführen: Starten Sie den Server mit RESEND_API_KEY=your_api_key bun run index.tsx
. Der Zugriff auf http://localhost:3000
(oder das Auslösen der von Ihnen definierten spezifischen Route/Methode) sendet die E-Mail.
Senden mit Nuxt
Nuxt ist ein beliebtes Vue.js-Framework.
1. Installieren:
npm install resend
# or
yarn add resend
# or
pnpm add resend
2. Server-Route erstellen: Nuxt verwendet ein server/
-Verzeichnis für die Backend-Logik. Erstellen Sie eine Datei wie server/api/send.post.ts
(das .post
gibt an, dass sie POST-Anforderungen verarbeitet).
// server/api/send.post.ts
import { Resend } from 'resend';
// Access API Key securely (e.g., via runtimeConfig in nuxt.config.ts)
// See: <https://nuxt.com/docs/guide/going-further/runtime-config>
const config = useRuntimeConfig();
const resend = new Resend(config.resendApiKey); // Assuming key is set in runtime config
export default defineEventHandler(async (event) => {
// Optional: Read body if data comes from request
// const body = await readBody(event);
try {
const data = await resend.emails.send({
from: 'Your Name <you@yourverifieddomain.com>',
to: ['delivered@resend.dev'],
subject: 'Hello from Resend and Nuxt!',
html: '<strong>Nuxt works!</strong>',
// You can integrate Vue email templates (e.g., using vue-email)
// See: <https://github.com/Dave136/vue-email>
});
// Nuxt 3 automatically handles returning the data as JSON
return data;
} catch (error: any) { // Catch specific error types if possible
console.error("Resend Error:", error);
// Throw an error that Nuxt can handle, setting the status code
throw createError({
statusCode: 400, // Or 500
statusMessage: 'Failed to send email',
data: error // Optionally include error details
});
}
});
// In your nuxt.config.ts, define runtimeConfig:
// export default defineNuxtConfig({
// runtimeConfig: {
// resendApiKey: process.env.NUXT_RESEND_API_KEY, // Server-side only
// public: {
// // Public keys accessible on client-side
// }
// }
// })
// And set NUXT_RESEND_API_KEY in your .env
3. Auslösen: Rufen Sie den Endpunkt /api/send
(mithilfe der POST-Methode) von Ihren Nuxt-Seiten oder -Komponenten aus mithilfe von $fetch
oder useFetch
auf.
Senden mit Vercel-Funktionen
Vercel-Funktionen sind serverlose Funktionen, die sich nahtlos in Next.js integrieren lassen oder eigenständig verwendet werden können. Das obige Next.js-Beispiel zeigt bereits die Verwendung in einer Vercel-Umgebung. Wenn Sie Vercel-Funktionen ohne Next.js verwenden (z. B. mit einem statischen Site-Generator oder einem anderen auf Vercel bereitgestellten Framework), ist der Ansatz ähnlich:
1. Funktion erstellen: Erstellen Sie eine Datei im Verzeichnis api/
Ihres Projekts (z. B. api/send.ts
).
// api/send.ts (Example for standard Vercel Function)
import type { VercelRequest, VercelResponse } from '@vercel/node';
import { Resend } from 'resend'; // You might need to install resend
// Ensure RESEND_API_KEY is set as a Vercel Environment Variable
const resendApiKey = process.env.RESEND_API_KEY;
if (!resendApiKey) {
console.error("RESEND_API_KEY is not set");
// Don't proceed if the key is missing in production
}
const resend = new Resend(resendApiKey);
export default async function handler(
request: VercelRequest,
response: VercelResponse,
) {
// Recommended: Check for POST method
if (request.method !== 'POST') {
return response.status(405).json({ message: 'Method Not Allowed' });
}
try {
const { data, error } = await resend.emails.send({
from: 'Your Name <you@yourverifieddomain.com>',
to: ['delivered@resend.dev'],
subject: 'Hello from Resend & Vercel Functions!',
html: '<strong>It works on Vercel!</strong>',
// React templates can be used if your function bundles React
});
if (error) {
console.error('Resend Error:', error);
return response.status(400).json(error);
}
return response.status(200).json(data);
} catch (e) {
console.error('Handler Error:', e);
return response.status(500).json({ message: 'Internal Server Error' });
}
}
2. Umgebungsvariable konfigurieren: Fügen Sie Ihren RESEND_API_KEY
als Umgebungsvariable in Ihren Vercel-Projekteinstellungen hinzu.
3. Bereitstellen: Stellen Sie Ihr Projekt mithilfe der Vercel CLI (vercel
) oder der Git-Integration bereit.
4. Auslösen: Senden Sie eine POST-Anforderung an die bereitgestellte Funktions-URL (z. B. https://your-project.vercel.app/api/send
).