AhaSend
Terug naar Blog

Inline afbeeldingen nodig in je transactionele e-mails? Stap over naar AhaSend

Mark Kraakman
Mark Kraakman
Inzichten

Sommige e-mailproviders kunnen afbeeldingen niet rechtstreeks in het bericht insluiten. Hun transactionele API laat je alleen naar een gehoste afbeelding linken, niet een afbeelding meesturen en inline tonen. Brevo is een bekend voorbeeld: de transactionele API ondersteunt geen inline (CID) afbeeldingen, waardoor logo's, bonnen en handtekeningen die binnen de e-mail horen te verschijnen eindigen als gebroken links of worden verwijderd.

AhaSend ondersteunt inline afbeeldingen standaard, via zowel de API als SMTP. Als dat de reden is dat je wilt overstappen, is de overstap zo gebeurd.

Inline versus gelinkte afbeeldingen

Er zijn twee manieren om een afbeelding in een e-mail te zetten:

  • Gelinkt: een <img src="https://..."> die naar een gehost bestand wijst. Simpel, maar afhankelijk van of de mailclient van de ontvanger externe afbeeldingen laadt, en veel clients blokkeren dat standaard.
  • Inline (ingesloten): de afbeelding reist mee in het bericht als bijlage en wordt aangeroepen met een cid:-URL. Die wordt ook getoond als externe afbeeldingen geblokkeerd zijn, en daarom is het de juiste keuze voor logo's, QR-codes, tickets en facturen.

AhaSend doet inline afbeeldingen op de standaard MIME-manier, zodat het in alle mailclients werkt.

Hoe inline afbeeldingen werken bij AhaSend

Stuur de afbeelding mee, markeer hem als inline, geef hem een Content-ID en verwijs daar vanuit je HTML naar met cid:.

{
  "from": { "email": "[email protected]", "name": "Jouw Bedrijf" },
  "recipients": [ { "email": "[email protected]" } ],
  "subject": "Je bon",
  "html_content": "<p>Bedankt voor je bestelling!</p><img src=\"cid:[email protected]\" alt=\"logo\">",
  "attachments": [
    {
      "base64": true,
      "data": "iVBORw0KGgoAAAANSUhEUgAA...",
      "content_type": "image/png",
      "file_name": "logo.png",
      "content_disposition": "inline",
      "content_id": "<[email protected]>"
    }
  ]
}

Eén detail waar mensen op vastlopen: de waarde van content_id moet tussen punthaken staan (<[email protected]>), precies zoals in de MIME Content-ID-header. De cid:-verwijzing in je HTML blijft juist zonder punthaken (cid:[email protected]). Zet content_disposition op inline zodat clients de afbeelding op zijn plek tonen in plaats van als download.

Volledige veldreferentie: Create Message, attachments.

Overstappen van je huidige provider

Als je de API rechtstreeks aanroept: zet je bestaande payload om naar het Create Message-endpoint van AhaSend en verplaats elke ingesloten afbeelding naar de attachments-array met content_disposition: "inline" en een content_id tussen punthaken. De rest van het verzoek (from, recipients, subject, html_content) neem je direct over.

Als je Symfony gebruikt: AhaSend is een drop-in vervanging. Er is een officiële Symfony Mailer bridge, dus je houdt je bestaande Email-code, inclusief ->embed() voor inline afbeeldingen, en wijzigt alleen de transport.

composer require symfony/aha-send-mailer
# .env  (API-transport)
MAILER_DSN=ahasend+api://API_KEY@default

# of SMTP
MAILER_DSN=ahasend+smtp://USERNAME:PASSWORD@default

Je bestaande Symfony-code blijft ongewijzigd werken:

$email = (new Email())
    ->from('[email protected]')
    ->to('[email protected]')
    ->subject('Je bon')
    ->html('<p>Bedankt!</p><img src="cid:logo">')
    ->embed(fopen('/pad/naar/logo.png', 'r'), 'logo');

Symfony's embed() regelt de Content-ID voor je, dus inline afbeeldingen werken zodra de DSN naar AhaSend wijst.

Waar je alles vindt

Richt een domein in, voeg je API-key toe, en je inline afbeeldingen verschijnen precies zoals je ze bedoeld hebt.

Begin gratis met AhaSend →