E-mail versturen vanuit Ollama
Lokaal model, betrouwbare bezorging — laat Ollama een send_email tool aanroepen en WeSender verstuurt vanuit de EU.
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=...).