Integraties

E-mail versturen vanuit Ollama

Lokaal model, betrouwbare bezorging — laat Ollama een send_email tool aanroepen en WeSender verstuurt vanuit de EU.

Model-provider TypeScript Webhooks

Vereisten

  • WeSender-account met geverifieerd domein en API-sleutel
  • Ollama lokaal geinstalleerd met een tool-compatibel model (bijv. llama3.1)
  • Node.js 18 of nieuwer
  • npm install ollama @wesender/node

Stap 1: Installeer de pakketten

Voeg de Ollama JavaScript-client en de WeSender Node SDK toe aan je project. Zorg dat Ollama lokaal draait en een model heeft geladen.

npm install ollama @wesender/node

Stap 2: Roep het lokale model aan met de tool

Stuur een verzoek naar je lokale Ollama-instantie met de tool-definitie. Het model geeft een function_call terug als het send_email wil aanroepen.

import ollama from "ollama"

const response = await ollama.chat({
  model: "llama3.1",
  messages: [
    { role: "user", content: "Mail een welkomstbericht naar nieuwe@klant.nl" }
  ],
  tools: [{
    type: "function",
    function: {
      name: "send_email",
      description: "Verstuur een transactionele e-mail via WeSender",
      parameters: {
        type: "object",
        properties: {
          to:      { type: "string" },
          subject: { type: "string" },
          html:    { type: "string" },
        },
        required: ["to", "subject", "html"],
      },
    },
  }],
})

Stap 3: Voer de toolaanroep uit

Controleer of het model een function_call heeft teruggegeven en verstuur de e-mail via WeSender.

import { Wesender } from "@wesender/node"

const emailClient = new Wesender(process.env.WESENDER_API_KEY!)

const call = response.message.tool_calls?.[0]
if (call?.function.name === "send_email") {
  const { to, subject, html } = call.function.arguments as Record<string, string>
  const result = await emailClient.emails.send({
    from: "assistent@jouwdomein.nl",
    to,
    subject,
    html,
  })
  console.log("E-mail verstuurd, id: " + result.id)
}

Volledig voorbeeld

Hier is de volledige implementatie in src/ollama.ts:

import ollama from "ollama"
import { Wesender } from "@wesender/node"

const emailClient = new Wesender(process.env.WESENDER_API_KEY!)

const response = await ollama.chat({
  model: "llama3.1",
  messages: [{ role: "user", content: "Mail een welkomstbericht naar nieuwe@klant.nl" }],
  tools: [{
    type: "function",
    function: {
      name: "send_email",
      description: "Verstuur een transactionele e-mail via WeSender",
      parameters: {
        type: "object",
        properties: {
          to:      { type: "string" },
          subject: { type: "string" },
          html:    { type: "string" },
        },
        required: ["to", "subject", "html"],
      },
    },
  }],
})

const call = response.message.tool_calls?.[0]
if (call?.function.name === "send_email") {
  const { to, subject, html } = call.function.arguments as Record<string, string>
  try {
    const result = await emailClient.emails.send({
      from: "assistent@jouwdomein.nl",
      to,
      subject,
      html,
    })
    console.log("E-mail verstuurd, id: " + result.id)
  } catch (err) {
    console.error("Fout bij versturen:", err)
  }
}

Bezorgstatussen via webhooks

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

Veelgestelde vragen

Welke modellen ondersteunen tool calling?

Modellen die tool calling ondersteunen, zoals Llama 3.1 en nieuwer. Controleer per model in de Ollama-documentatie of tool calling beschikbaar is.

Blijft alles lokaal?

Het model draait op je eigen machine. De e-mail gaat via WeSender, dat verwerkt binnen Europese datacenters. Zo combineer je een volledig lokale AI met betrouwbare bezorging.

Werkt dit ook in Python?

Ja. Ollama heeft ook een Python-client. Gebruik dezelfde opzet met de WeSender Python SDK: client.emails.send(from_=..., to=..., subject=..., html=...).

Volgende stappen