Integraties

E-mail versturen vanuit Anthropic Claude

Gebruik Claude's tool use om e-mails te sturen vanuit een AI-agent zonder tussenkomst van de gebruiker.

Agent-framework Webhooks

Vereisten

  • Wesender-account met geverifieerd verzenddomein
  • API-sleutel van Wesender (WESENDER_API_KEY)
  • Anthropic API-sleutel (ANTHROPIC_API_KEY)
  • Node.js 18 of nieuwer

Stap 1: Installeer de benodigde packages

Maak een nieuw Node.js-project aan en installeer de Anthropic SDK en de Wesender Node.js SDK.

npm init -y
npm install @anthropic-ai/sdk @wesender/node
npm install -D typescript tsx

Stap 2: Definieer de send_email-tool

Maak een tool-definitie aan. Claude gebruikt het JSON-schema om te begrijpen welke parameters hij moet meegeven bij het versturen van een e-mail.

import Anthropic from "@anthropic-ai/sdk"

const tools: Anthropic.Tool[] = [
  {
    name: "send_email",
    description: "Verstuur een transactionele e-mail via Wesender",
    input_schema: {
      type: "object",
      properties: {
        to:      { type: "string", description: "E-mailadres van de ontvanger" },
        subject: { type: "string", description: "Onderwerp van de e-mail" },
        html:    { type: "string", description: "HTML-inhoud van de e-mail" },
      },
      required: ["to", "subject", "html"],
    },
  },
]

Stap 3: Roep Claude aan en verwerk de tool

Stuur een gebruikersbericht naar Claude. Als Claude de send_email-tool aanroept, haal je de parameters op en stuur je de e-mail via Wesender.

import { WesenderClient } from "@wesender/node"

const client   = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY })
const wesender = new WesenderClient({ apiKey: process.env.WESENDER_API_KEY })

const response = await client.messages.create({
  model:      "claude-opus-4-8",
  max_tokens: 1024,
  tools,
  messages:   [{ role: "user", content: "Stuur een welkomstmail naar jan@voorbeeld.nl" }],
})

for (const block of response.content) {
  if (block.type === "tool_use" && block.name === "send_email") {
    const { to, subject, html } = block.input as {
      to: string; subject: string; html: string
    }
    await wesender.emails.send({ from: "noreply@jouwdomein.nl", to, subject, html })
    console.log("E-mail verzonden naar", to)
  }
}

Volledig voorbeeld

Hier is de volledige implementatie in claude-tool-use.ts:

import Anthropic from "@anthropic-ai/sdk"
import { WesenderClient } from "@wesender/node"

const client   = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY })
const wesender = new WesenderClient({ apiKey: process.env.WESENDER_API_KEY })

const tools: Anthropic.Tool[] = [
  {
    name: "send_email",
    description: "Verstuur een transactionele e-mail via Wesender",
    input_schema: {
      type: "object",
      properties: {
        to:      { type: "string", description: "E-mailadres van de ontvanger" },
        subject: { type: "string", description: "Onderwerp van de e-mail" },
        html:    { type: "string", description: "HTML-inhoud van de e-mail" },
      },
      required: ["to", "subject", "html"],
    },
  },
]

async function runEmailAgent(userMessage: string) {
  const response = await client.messages.create({
    model:      "claude-opus-4-8",
    max_tokens: 1024,
    tools,
    messages:   [{ role: "user", content: userMessage }],
  })

  for (const block of response.content) {
    if (block.type === "tool_use" && block.name === "send_email") {
      const { to, subject, html } = block.input as {
        to: string; subject: string; html: string
      }
      await wesender.emails.send({ from: "noreply@jouwdomein.nl", to, subject, html })
      console.log("E-mail verzonden naar", to)
    }
  }
}

runEmailAgent("Stuur een bevestigingsmail naar maria@voorbeeld.nl")

Bezorgstatussen via webhooks

Anthropic Claude kan bezorg-, bounce- en klachtsignalen ontvangen via webhooks. Configureer een webhook-endpoint in je Anthropic Claude-workflow dat POST-verzoeken van Wesender accepteert. Zie Webhooks instellen voor de volledige configuratiestappen en het payload-formaat.

Veelgestelde vragen

Kan ik meerdere e-mails in een gesprek sturen?

Ja. Voeg het tool_result-blok toe aan de berichten en stuur een vervolgrequest naar Claude. Zolang je de conversation history bijhoudt, kan Claude meerdere keren send_email aanroepen binnen hetzelfde gesprek.

Welk Claude-model moet ik gebruiken?

claude-opus-4-8 biedt de sterkste redenering voor complexe instructies. Voor hogere snelheid bij lagere kosten kun je claude-haiku-4-5-20251001 gebruiken. Beide ondersteunen tool use volledig.

Hoe voorkom ik dat Claude onbedoeld e-mails verstuurt?

Bouw een bevestigingsstap in: verwerk de tool_use-blokken niet automatisch, maar toon de parameters eerst aan de gebruiker. Wacht op goedkeuring voordat je de Wesender API aanroept. Zo blijft de mens in de loop.

Volgende stappen