E-mail verzenden via API in JavaScript (Node.js Tutorial)

Inhoudsopgave
Inhoudsopgave 14 secties
Aan de slag
E-mails versturen
Productie
Referentie
JavaScript Tutorial

Hoe te E-mail verzenden via API in JavaScript (Node.js-handleiding)

Sla de SMTP-standaardtekst over. Deze handleiding laat zien hoe je e-mail verzendt in Node.js met behulp van de Unipile uniforme e-mail API - met copy-paste code voor Gmail, Outlook en SMTP in minder dan 10 regels JavaScript.

e-mail verzenden API JavaScript node.js e-mail verzenden API Gmail / Outlook / SMTP ESM + async/await
sendEmail.mjs
importeer { UnipileClient } van 'unipile-node-sdk'; const klant = nieuw UnipileClient( proces.env.UNIPILE_DSN, process.env.UNIPILE_TOKEN ); wacht op client.e-mail.verzenden({ account_id: 'UW_ACCOUNT_ID', aan: [{ display_name: 'Alice', identificatiecode: 'alice@example.com' }], onderwerp: 'Hallo vanuit Node.js', body: '

Verzonden via Unipile!

'
});
E-mail afgeleverd - 202 Geaccepteerd
Werkt met: Gmail Outlook IMAP
Samengevat

Node.js-voorbeeld van 5 regels

Als je al weet wat een Verzend e-mail API is en wil gewoon een e-mail API JavaScript-code meesturen die daadwerkelijk werkt, hier is hij. De volledige tutorial volgt hieronder.

1
Installeer de SDK
npm installeer unipile-node-sdk
2
Omgevingsvariabelen instellen
Toevoegen UNIPILE_DSN en UNIPILE_TOKEN naar jou .env bestand.
3
Koppel een e-mailaccount
OAuth voor Gmail/Outlook of SMTP-gegevens voor elke IMAP-server - één API-aanroep.
4
Roepen client.email.verstuur()
Pass account_id, naar, onderwerpen lichaam. Klaar.
Hetzelfde code werkt voor Gmail, Outlook en elke IMAP-server - geen provider-specifieke logica nodig. Controleer de E-mail API-handleiding voor het volledige conceptoverzicht.
send.mjs
importeer { UnipileClient } van 'unipile-node-sdk'; const klant = nieuw UnipileClient( proces.env.UNIPILE_DSN, process.env.UNIPILE_TOKEN ); const resultaat = wachten client.e-mail.verzenden({ account_id: 'acc_xxxxxxxxxxxxxxxx', naar: [{ weergavenaam: 'Alice Martin', identificatie: 'alice@acme.com' }], onderwerp: 'Hallo vanuit Node.js', body: '

Verzonden via Unipile API!

'
}); console.log(resultaat); // { tracking_id: 'msg_...' }
Setup

Vereisten en installatie

Voordat u de JavaScript-workflow van de send email API in productie kunt gebruiken, heeft u vier dingen nodig: een ondersteunde Node.js-versie, de Unipile SDK, een API-sleutel en een DSN-eindpunt.

Node.js 18+ (20 aanbevolen)
De Unipile SDK gebruikt native fetch en topniveau wacht op. Node 20 LTS wordt aanbevolen voor productie. Controleer uw versie met node -v.
Unipile API-sleutel & DSN
Meld je aan op het Unipile-dashboard om je toegangstoken en DSN (een persoonlijk HTTPS-eindpunt zoals api4.unipile.com:13444Beide zijn vereist om de client te initialiseren.
ESM of CommonJS
De SDK ondersteunt beide. Voor ESM, gebruik .mjs bestanden of set "type":"module" in pakket.json. Voor CommonJS, dynamisch import() werkt ook - voorbeelden hieronder getoond.
Een gekoppeld e-mailaccount
U stuurt e-mail door een gekoppeld account (Gmail, Outlook of IMAP). Het volgende gedeelte begeleidt u door de OAuth-stroom om er een te koppelen. Dit doet u slechts één keer per account.
Het installeren van de Unipile SDK
npm
garen
pnpm
npm installeer unipile-node-sdk
yarn add unipile-node-sdk
pnpm add unipile-node-sdk
.env
# Unipile-gegevens (commit dit bestand nooit) UNIPILE_DSN=https://api4.unipile.com:13444 UNIPILE_TOKEN=uw_toegangstoken_hier # Het account-ID van het gekoppelde e-mailaccount EMAIL_ACCOUNT_ID=acc_xxxxxxxxxxxxxxxx

Toevoegen .env naar jou .gitignore. Gebruik dotenv of de native Node 20.6+ --omgevingsbestand vlag om het te laden: node --env-file=.env send.mjs.

Accountkoppeling

Uw eerste e-mailaccount verbinden

De unificerende e-mail-API gebruikt een enkel account_id om providerverschillen te abstraheren. Koppel een account één keer, bel vervolgens client.email.verstuur() identiek over alle drie de providers.

Kies hieronder uw provider om het exacte Node.js-fragment te zien. De geretourneerde account_id is wat u opslaat en hergebruikt voor elke volgende verzending.

GmailGmail OAuth
OutlookOutlook / Microsoft 365
IMAPSMTP / IMAP
connect-gmail.mjs
importeer { UnipileClient } van 'unipile-node-sdk'; const klant = nieuw UnipileClientprocess.env.UNIPILE_DSN, process.env.UNIPILE_TOKEN); // Stap 1: Genereer een gehoste OAuth-link voor Gmail const { url } = wachten account van de cliënt.maakHostedAuthLink({ type: 'GOOGLE', success_redirect_url: process.env.OAUTH_CALLB ACK_URL, failure_redirect_url: process.env.OAUTH_CALLB ACK_URL + '?error=1', }); // Stap 2: herlei je gebruiker naar `url` console.log('Gebruiker doorverwijzen naar:', url); // Stap 3: Unipile POST de account_id naar je callback // Sla het op: process.env.EMAIL_ACCOUNT_ID = result.account_id
connect-outlook.mjs
importeer { UnipileClient } van 'unipile-node-sdk'; const klant = nieuw UnipileClientprocess.env.UNIPILE_DSN, process.env.UNIPILE_TOKEN); // Werkt voor persoonlijke Outlook EN Microsoft 365 / Exchange Online const { url } = wachten account van de cliënt.maakHostedAuthLink({ type: 'MICROSOFT', success_redirect_url: process.env.OAUTH_CALLB ACK_URL, failure_redirect_url: process.env.OAUTH_CALLB ACK_URL + '?error=1', }); // Gebruiker omleiden -> ze voltooien de Microsoft OAuth-stroom console.log('Gebruiker doorverwijzen naar:', url); // Zie: /syncing-emails-with-microsoft-graph-api-a-developers-guide/
connect-imap.mjs
importeer { UnipileClient } van 'unipile-node-sdk'; const klant = nieuw UnipileClientprocess.env.UNIPILE_DSN, process.env.UNIPILE_TOKEN); // SMTP/IMAP: referenties direct doorgeven (geen OAuth-omleiding) const account = wachten account van de cliënt.create({ type: 'IMAP', imap: { username: process.env.IMAP_GEBRUIKER, wachtwoord: process.env.IMAP_WACHTWOORD, host: process.env.IMAP_HOST, poort: 993, }, smtp: { username: process.env.IMAP_GEBRUIKER, wachtwoord: process.env.IMAP_WACHTWOORD, host: process.env.SMTP_HOST, poort: 587, }, }); console.log(account.account_id); // dit opslaan
Gmail Gmail
Gebruikt Google OAuth 2.0. Geen app-wachtwoorden nodig. Zie de volledige Gmail API e-mail versturen tutorial voor scopes en instellingen van het toestemmingsscherm.
Outlook Outlook / Microsoft 365
Maakt gebruik van Microsoft Graph OAuth. Dekt persoonlijke Outlook en M365 tenants. Details in de Microsoft Graph e-mailgids.
IMAP SMTP / IMAP
Werkt met elke provider die IMAP/SMTP aanbiedt (Yahoo, ProtonMail Bridge, aangepaste mailservers). Lees de IMAP API-oplossingshandleiding.
Kern-API

Uw eerste e-mail verzenden vanuit Node.js

Drie productierijpe patronen voor de JavaScript-workflow van de send email API: platte tekst, HTML met CC/BCC, en het lezen van het response object. Alle gebruiken dezelfde client.email.verstuur() bel.

1
Platte tekst e-mail
Eenvoudigste geval
platte-tekst.mjs
importeer { UnipileClient } van 'unipile-node-sdk'; const klant = nieuw UnipileClientprocess.env.UNIPILE_DSN, process.env.UNIPILE_TOKEN); const resultaat = wachten client.e-mail.verzendenaccount_id: process.env.EMAIL_ACCOUNT_ID, aan: [{ display_name: 'Bob', identificatie: 'bob@example.com' }], onderwerp: 'Welkom op het platform', body: 'Hoi Bob, je account is klaar.', }); console.log(result.tracking_id); // msg_xxxxxxxxxxxxxxxx
202 Geaccepteerd - result.tracking_id gevuld
2
HTML lichaam met CC en BCC
Meerdere ontvangers
html-cc-bcc.mjs
const resultaat = wachten client.e-mail.verzendenaccount_id: process.env.EMAIL_ACCOUNT_ID, aan: [{ display_name: 'Alice', identifier: 'alice@acme.com' }], cc: [{ display_name: 'Manager', identificatie: 'boss@acme.com' }], bcc: [{ display_name: 'Audit', identifier: 'audit@internal.io' }}, onderwerp: 'Uw factuur #1042', // HTML body - provider rendert het native body: `

Factuur #1042

Te betalen bedrag: $299

Betaal nu `
, }); console.log('Verzonden:', result.tracking_id);
3
Volledig veld referentie
Alle ondersteunde parameters
VeldTypeVereistBeschrijving
account_idsnaarVereistID van het gekoppelde e-mailaccount om van te verzenden
naarOntvanger[]VereistArray van {weergavenaam, identificatie} voorwerpen
onderwerpsnaarVereistOnderwerp van de e-mail
lichaamsnaarVereistPlatte tekst of HTML-string
ccOntvanger[]OptioneelCC-ontvangers
ccOntvanger[]OptioneelBlinde kopie ontvangers
vanOntvangerOptioneelVerzendernaam negeren
antwoord_opsnaarOptioneelProvider bericht ID om op te antwoorden (threads)
bijlagenArrayOptioneelArray van [bestandsnaam, Buffer] tuples
aangepaste_headersobject[]OptioneelAangepaste X-headers-array
tracking_optiesvoorwerpOptioneel{opent, koppelt, label} - open/klikregistratie inschakelen
Gratis te starten
Klaar om e-mail te versturen via een API in JavaScript?

Verkrijg je API-sleutel, koppel een Gmail- of Outlook-account in enkele minuten en voer de Node.js-voorbeelden uit deze handleiding uit op echte postbussen.

Bijlagen

Bijlagen verzenden in Node.js

De bijlagen veld accepteert een array van [bestandsnaam, Buffer] tuples. Lees het bestand met Node's fs.readFileSync of stream het met fs.promises.readFile.

Enkele bestand van schijf
Gebruik fs.promises.readFile(pad) om een Buffer te krijgen, dan door te geven ['achternaam.pdf', buffer]. Werkt voor PDF, DOCX, afbeeldingen, elke binaire.
Meerdere bijlagen
Geef een array van tuples door. Elke tuple is onafhankelijk - meng bestandstypen vrij. Geen harde limiet per bijlage, maar houd de totale payload onder de limiet van je abonnement.
Inline afbeeldingen (CID)
Afbeeldingen insluiten in de HTML-body met behulp van cid: schema. Verwijs naar dezelfde bestandsnaam die in de bijlagentuple wordt gebruikt: <img src="cid:logo.png">.
Buffer van een stroom
Genereer een PDF "on-the-fly" (bijvoorbeeld met pdfkit), verzamel het in een Buffer en voeg het toe zonder het naar schijf te schrijven. Productieklaar voor serverless.
bevestig-bestand.mjs
importeer { UnipileClient } van 'unipile-node-sdk'; importeer beloften als fs } van 'node:fs'; const klant = nieuw UnipileClientprocess.env.UNIPILE_DSN, process.env.UNIPILE_TOKEN); // Bestandsinhoud lezen in een Buffer const pdfBuffer = wachten fs.leesBestand('./factuur.pdf'); wacht op client.e-mail.verzendenaccount_id: proces.env.EMAIL_ACCOUNT_ID, aan: [{ display_name: 'Klant', identificatie: 'client@example.com' }], onderwerp: 'Uw factuur is bijgevoegd', body: '

U vindt uw factuur bijgevoegd.

'
, bijlagen: [ ['factuur.pdf', pdfBuffer], // [bestandsnaam, Buffer] ], });
attach-multiple-inline.mjs
const [logo, rapport] = wachten Promise.all([ fs.leesBestand('./logo.png'), fs.leesBestand('./report.xlsx'), ]); wacht op client.e-mail.verzendenaccount_id: process.env.EMAIL_ACCOUNT_ID, naar: [{ display_name: 'Team', identificatie: 'team@acme.com' }], onderwerp: 'Kwartaal 1 Rapport', body: Logo

Q1 Rapport

Zie het bijgevoegde spreadsheet voor details.

`
, bijlagen: [ ['logo.png', logo], // inline via cid:logo.png in body ['rapport.xlsx', rapport], // standaard bijlage ], });
Grootte limiet: Houd individuele bijlagen onder de 25 MB (de harde limiet van Gmail). Upload voor grote bestanden naar cloudopslag en voeg in plaats daarvan een downloadlink toe in de e-mail.
Geavanceerd

Antwoorden, Threads & Tracking

Ga verder dan basisverzendingen: threadreacties, aangepaste headers voor idempotentie, open-/kliktracking via webhooks, en e-mail verzenden namens een gebruiker.

1
Reageren op een thread

Geef de provider bericht ID (teruggegeven in het oorspronkelijke send response of uit het opsommen van e-mails) door als antwoord_op. Unipile injecteert het juiste In-Reply-To en Referenties headers zodat het antwoord correct wordt gethread in Gmail, Outlook en IMAP-clients.

antwoord-draad.mjs
wacht op client.e-mail.verzendenaccount_id: process.env.EMAIL_ACCOUNT_ID, naar: [{ display_name: 'Alice', identificatie: 'alice@acme.com' }], onderwerp: 'Re: Uw vraag', body: '

Bedankt voor uw bericht! Hier is het antwoord...

'
, // Provider bericht-ID van de originele e-mail reageren_op: 'bericht_xxxxxxxxxxxxxxxx', });
2
Aangepaste headers en idempotentie

Gebruik aangepaste_headers toe te voegen X- header. Een veelvoorkomend patroon is X-Idempotency-Sleutel om dubbele verzendingen te voorkomen bij het opnieuw proberen na een netwerktime-out.

aangepaste-koppen.mjs
importeer { willekeurigeUUID } van 'knooppunt:crypto'; wacht op client.e-mail.verzendenaccount_id: process.env.EMAIL_ACCOUNT_ID, naar: [{ display_name: 'Bob', identificatie: 'bob@example.com' }], onderwerp: 'Orderbevestiging #9981', body: '

Uw bestelling is bevestigd.

'
, custom_headers: [ { naam: 'X-Idempotentie-Sleutel', waarde: willekeurigeUUID}, { naam: 'X-Order-ID', waarde: '9981' }, ], });
3
Open- en kliktracking via webhooks

Inschakelen van tracking in tracking_opties. Unipile vuurt een webhook-gebeurtenis af (e-mail.geopend / email.link_aangeklikt) naar uw geregistreerde webhook-URL met de etiket Je stelt hier in zodat je gebeurtenissen kunt correleren met je interne ID's.

tracking.mjs
wacht op client.e-mail.verzendenaccount_id: process.env.EMAIL_ACCOUNT_ID, naar: [{ display_name: 'Lood', identificatie: 'lead@prospect.com' }], onderwerp: 'Opvolging van uw proefperiode', body: '

Hallo, wilde even informeren...

'
, tracking_opties: { opens: true, // vuurt webhook email.opened af links: true, // vuurt email.link_clicked webhook af etiket 'crm_lead_12345', // je interne correlatie-ID }, });
4
Verzenden namens een andere gebruiker

Bij het bouwen van multi-tenant SaaS-apps koppelt elke eindgebruiker zijn eigen e-mailaccount. Sla de op account_id per gebruiker in uw database en geef deze mee bij het verzenden. Zie de volledige gids op hoe e-mail te verzenden namens een gebruiker.

namens
// Elk gebruikersaccount heeft zijn eigen gekoppelde account_id dat is opgeslagen in je database async function stuurAlsGebruiker(gebruikerId, aan, onderwerp, bericht) { const gebruiker = wachten db.GebruikerOphalen(gebruikersId); return client.e-mail.verzendenaccount_id: user.unipile_account_id, // per-gebruiker aan, onderwerp, inhoud, }); } E-mail wordt verzonden vanaf Alice's Gmail, niet vanaf uw serveradres wacht op stuurAlsGebruiker('gebruiker_alice', ontvangers, onderwerp, inhoud);

Werk je liever in Python? Zie onze Python-implementatie gids.

Productieklaar

Foutafhandeling en Opnieuw proberen

Netwerkfouten en snelheidslimieten zijn onvermijdelijk op schaal. Hier is een productieklare async/await-patroon voor uw send email API JavaScript-implementatie - met exponentiële backoff en gestructureerd loggen met Winston of Pino.

202
Geaccepteerd
E-mail succesvol in wachtrij geplaatst. De tracking_id wordt gevuld. Geen herhaling nodig.
429
Rate Limiet
Te veel verzoeken. Respecteer de Opnieuw-Proberen-Na Koptekst. Gebruik exponentiële backoff.
401
Ongeautoriseerd
Ongeldig of verlopen token. Controleer UNIPILE_TOKEN omgevingsvariabele. Probeer niet opnieuw - corrigeer inloggegevens.
422
Validatiefout
Ontbrekend verplicht veld of ongeldige ontvanger. Controleer de foutmelding - deze specificeert welk veld is mislukt.
503
Dienst niet beschikbaar
Tijdelijke serverfout. Veilig om opnieuw te proberen met backoff. Controleer status.unipile.com voor incidenten.
404
Account niet gevonden
De account_id bestaat niet of is ingetrokken. Koppel de account opnieuw.
Exponentiële vertraging met async/await
verzenden-met-herhaling.mjs
import { UnipileClient } from 'unipile-node-sdk'; import logger from './logger.mjs'; // Winston or Pino instance const client = new UnipileClient(process.env.UNIPILE_DSN, process.env.UNIPILE_TOKEN); async function sendWithRetry(payload, maxAttempts = 4) { let attempt = 0; while (attempt < maxAttempts) { try { const result = await client.email.send(payload); logger.info({ tracking_id: result.tracking_id }, 'Email sent'); return result; } catch (err) { const status = err?.status ?? err?.statusCode; // Do not retry on client errors (4xx except 429) if (status >= 400 && status !== 429 && status < 500) { logger.error({ status, err }, 'Non-retryable error'); throw err; } attempt++; if (attempt >= maxAttempts) throw err; // Exponential backoff: 1s, 2s, 4s, 8s... const delay = 1000 * 2 ** (attempt - 1); logger.warn({ attempt, delay, status }, 'Retrying...'); await new Promise(r => setTimeout(r, delay)); } } } // Usage await sendWithRetry({ account_id: process.env.EMAIL_ACCOUNT_ID, to: [{ display_name: 'User', identifier: 'user@example.com' }], subject: 'Your report is ready', body: '

Click to download.

'
, });
Beveiliging

Beveiligingsprincipes in Node.js

Jouw UNIPILE_TOKEN verleent volledige API-toegang. Stel deze nooit bloot aan de clientzijde. Zie de volledige e-mail API beveiligingshandleiding voor geavanceerde onderwerpen, waaronder DKIM, SPF en rotatie van OAuth-tokens.

Stel nooit sleutels bloot aan de clientzijde
Jouw UNIPILE_TOKEN moet op de server blijven. Elke browser-side JavaScript - inclusief Next.js clientcomponenten, React-frontend of Vite - mag de token NIET rechtstreeks importeren.
Gebruik een backend proxy route
In Next.js, maak een API-route (/api/e-mail-verzenden. In Express, een POST-endpoint. Authenticeer eerst je eigen gebruikers, roep daarna Unipile server-side aan met de token uit de omgeving.
OAuth vernieuwingstokens
Unipile beheert Gmail- en Outlook OAuth-tokens automatisch opnieuw. Uw opgeslagen account_id blijft geldig. U hoeft geen rekening te houden met het verlopen van uw toegangstoken.
DKIM en SPF (afzenderreputatie)
E-mails verzonden via gekoppelde Gmail/Outlook-accounts nemen de DKIM-handtekeningen van die providers over. Configureer DKIM op uw mailserver voordat u koppelt voor IMAP/SMTP-accounts.
Geldigheid ontvangerinvoer
Als ontvangers afkomstig zijn van gebruikersinvoer, valideer dan het e-mailformaat aan de serverzijde voordat u de API aanroept. De API zal ongeldige adressen afwijzen met een 422, maar validatie vóór de aanroep geeft duidelijkere gebruikersfouten.
API-tokens beperken op omgeving
Gebruik aparte Unipile-projecten (en tokens) voor dev, staging en productie. Dit voorkomt dat test-e-mails naar echte gebruikers worden verzonden en beperkt de impact als een sleutel wordt gelekt.
FOUT Token in frontend-code
// client.js - DOE DIT NOOIT const client = new UnipileClient( 'https://api4.unipile.com:13444', 'sk_live_xxxxxxxxxx' ontdekt! );
GOED Backend proxy route (Next.js)
// app/api/send-email/route.js exporteer asynchroon functie POST(req) { // controleer eerst authenticatie const session = wacht op getServerSession(); if (!session) return new Response(null,{status:401}); const client = new UnipileClient( process.env.UNIPILE_DSN, // alleen server proces.env.UNIPILE_TOKEN // alleen server ); wacht op client.email.send({...}); }
Lees de volledige gids over e-mail API-beveiliging
Veelvoorkomende valkuilen

Veelvoorkomende valkuilen (Node.js-specifiek)

Dit zijn de meest voorkomende fouten die ontwikkelaars maken bij het voor de eerste keer integreren van een e-mail-API in JavaScript. Elk van deze fouten is gemakkelijk te vermijden zodra je het patroon kent - en ze zijn allemaal evenzeer van toepassing op de context van de Node.js e-mail-API.

1
Het vergeten van top-level await (CommonJS vs ESM)
Topniveau wacht op werkt alleen in ES-modules.mjs of "type":"module". In CommonJS, omhul je send-aanroep met een asynchroon IIFE of gebruik .dan(). De SDK werkt in beide - kies gewoon het juiste moduleformaat.
cjs-workaround.cjs
// CommonJS: omhullen met async IIFE (asynchroon () => { const { UnipileClient } = wachten importeer('unipile-node-sdk'); const klant = nieuw UnipileClientprocess.env.UNIPILE_DSN, process.env.UNIPILE_TOKEN); wacht op client.e-mail.verzenden({ /* ... */ }); })();
2
Promise.all gebruiken voor bulkverzendingen zonder rekening te houden met snelheidslimieten
Ontslag 1.000 Promise.all gelijktijdig verzenden zal snelheidslimieten raken en 429-fouten veroorzaken. Gebruik een gelijktijdigheidslimiter zoals p-limiet om parallelle aanvragen te beperken.
bulk-send.mjs
importeer pLimiet van 'p-limiet'; const begrenzen = pLimiet(5); // max 5 gelijktijdige verzendingen const resultaten = wachten Promise.allontvangers.kaartr => begrenzen(() => client.e-mail.verzendenaccount_id: process.env.EMAIL_ACCOUNT_ID, aan: [r], onderwerp, body, }))) );
3
Verkeerde buffercodering voor bijlagen
Doorloop altijd een ruwe Buffer object - geen base64-tekenreeks, geen UTF-8-tekenreeks. Als je base64-inhoud hebt (bijvoorbeeld van een webhook of API-antwoord), converteer deze dan eerst: Buffer.from(base64str, 'base64').
buffer-codering.mjs
// FOUT: een string doorgeven bijlagen: [['bestand.pdf', 'JVBERi0xLjQ0...']] // base64 string - breekt! // CORRECT: Bufferobject bijlagen: [['bestand.pdf', Buffer.van(base64-string, "base64)]] // of vanaf schijf: bijlagen: [['bestand.pdf', wacht op fs.leesBestand('./bestand.pdf')]]
4
Niet-afgehandelde Promise-rejecties die het proces crashen
In Node.js, een onverwerkte afwijzing in een fire-and-forget verstuur() call zal het proces in Node 15+ laten crashen. Altijd wacht op het resultaat of bijvoegen een .catch() afhandelaar.
onafgehandelde-afwijzing.mjs
// FOUT: fire-and-forget - crasht bij een fout in Node 15+ client.e-mail.verzenden(lading); // geen await, geen .catch() // CORRECT: handel het promise altijd af wacht op client.e-mail.verzenden(lading) // optie 1: await .vangst(fout => logger.fout(err)); // optie 2: .catch()
5
Deze API rechtstreeks gebruiken in browser JavaScript
De Unipile SDK en uw UNIPILE_TOKEN zijn alleen voor server-side Node.js. Browser fetch rechtstreeks naar de API zou uw token blootstellen. Gebruik een backend-route (Next.js API-route, Express-endpoint, Netlify/Vercel-functie) als proxy.
6
Verzenden zonder gekoppeld account (ontbrekende account_id)
U kunt niet verzenden vanaf een generiek adres - elke verzending moet verwijzen naar een geldig account_id van een eerder gekoppeld Gmail-, Outlook- of IMAP-account. De API retourneert 404 als de account_id ontbreekt of is ontkoppeld.

Veelgestelde vragen

Veelgestelde vragen over het verzenden van e-mail in JavaScript en Node.js met de Unipile unified email API.

Gebruik de Unipile unified email API in plaats van een directe SMTP-verbinding. Installeren unipile-node-sdk, initialiseren UnipileClient met uw DSN en token, koppel een Gmail- of Outlook-account via OAuth, en roep dan aan client.email.verstuur(). Geen SMTP-server, geen poort 587, geen TLS-configuratie nodig van uw kant - Unipile regelt de transportlaag.

Nee - en dat zou je ook niet moeten doen. Het aanroepen van de Unipile API vanuit browser JavaScript zou je UNIPILE_TOKEN aan elke gebruiker die DevTools opent. Roep de API altijd aan vanuit een server-side Node.js-context: een Express-route, een Next.js API-route (app/api/), een Vercel Edge Function of een Netlify Function.

Je frontend stuurt een verzoek naar je eigen backend-eindpunt, dat de gebruikerssessie authenticeert en vervolgens de Unipile-server aanroept.

Nodemailer maakt rechtstreeks verbinding met een SMTP-server vanuit uw Node.js-proces. Het vereist dat u zelf SMTP-gegevens beheert, TLS afhandelt, DKIM configureert en apart omgaat met de eigenaardigheden van elke provider.

De Unipile e-mail API is een cloud-abstractielaag: u koppelt accounts via OAuth (geen SMTP-gegevens nodig voor Gmail/Outlook), krijgt één consistente SDK voor alle providers, en Unipile regelt transport, retries en tokenverversing. De afweging is dat uw verzendingen via de infrastructuur van Unipile lopen in plaats van via een directe SMTP-verbinding.

Ja. De unipile-node-sdk pakket schepen met TypeScript-type definities. Je krijgt volledige autocomplete en typeveiligheid voor de verstuur() lading, inclusief Ontvanger, tracking_opties, en het antwoordtype.

importeer { UnipileClient } van 'unipile-node-sdk'; // Volledige TS-typen - autocomplete werkt in VSCode const klant: UnipileClient = nieuw UnipileClient(dsn, token); const resultaat = wachten client.e-mail.verzenden({ /* getypt! */ });

Voor verzendingen met hoge volumes, gebruik een concurrency limiter (bijv. p-limiet met 5-10 gelijktijdige oproepen), voeg exponentiële backoff toe voor 429-antwoorden, en spreid het versturen over meerdere gekoppelde accounts indien mogelijk. Elk gekoppeld e-mailaccount heeft zijn eigen verzendlimieten ingesteld door de provider (Gmail: ~500/dag voor reguliere accounts, hoger voor Workspace).

Voor echte bulk-/marketing-e-mails op schaal (miljoenen ontvangers), overweeg een speciale ESP (Mailgun, SendGrid) naast Unipile voor transactionele en OAuth-gebaseerde verzendingen.

Volgende.js: gebruik API-routesapp/api/e-mail-verzenden/route.js) of Server Actions. Houd de SDK-instantie alleen aan de serverzijde.

Nuxt. gebruik serverroutes (server/api/send-email.post.tsDe SDK is alleen voor Node.js, dus deze kan niet worden gebruikt in een composable of plugin die op de client draait.

NestJS: creëer een E-mailModule met een service die omhult UnipileClient. Injecteer het waar u verzendsignalen wilt activeren - in controllers, CRON-taken of gebeurtenisafhandelaars.

Heb je nog vragen? Ons team staat klaar om te helpen.

nl_NLNL