--- title: "Need inline images in your transactional emails? Switch to AhaSend" description: "Some transactional email providers can't embed images directly in the message. Their transactional API only lets you link to a hosted image, not attach one and reference it inline. Brevo is a common example: its transactional API has no support for inline (CID) images, so logos, receipts, and signatures that should render inside the email end up as broken links or get stripped.AhaSend supports inline images natively, over both the API and SMTP. If that gap is why you're looking to move, switching is quick." url: https://ahasend.com/blog/need-inline-images-your-transactional-emails-switch-ahasend markdown_url: https://ahasend.com/blog/need-inline-images-your-transactional-emails-switch-ahasend.md lang: en type: blog_post published: 2026-06-17 updated: 2026-08-28 author: "Mark Kraakman" category: "Insights" image: https://cms.ahasend.com/sites/default/files/2026-06/embedding-images.png --- # Need inline images in your transactional emails? Switch to AhaSend _By Mark Kraakman, June 17, 2026, in Insights_ ![Embed images into your messages with AhaSend](https://cms.ahasend.com/sites/default/files/2026-06/embedding-images.png) Some transactional email providers can't embed images directly in the message. Their transactional API only lets you link to a hosted image, not attach one and reference it inline. Brevo is a common example: its transactional API has no support for inline (CID) images, so logos, receipts, and signatures that should render inside the email end up as broken links or get stripped. AhaSend supports inline images natively, over both the API and SMTP. If that gap is why you're looking to move, switching is quick. ## Inline vs linked images There are two ways to put an image in an email: - **Linked:** an `` pointing at a hosted file. Simple, but it depends on the recipient's client loading remote images, which many block by default. - **Inline (embedded):** the image travels inside the message as an attachment and is referenced with a `cid:` URL. It renders even when remote images are blocked, which is why it's the right choice for logos, QR codes, tickets, and invoices. AhaSend does inline images the standard MIME way, so it works across mail clients. ## How inline images work on AhaSend Attach the image, mark it inline, give it a Content-ID, and reference that ID from your HTML with `cid:`. ```bash { "from": { "email": "noreply@yourdomain.com", "name": "Your Company" }, "recipients": [ { "email": "user@example.com" } ], "subject": "Your receipt", "html_content": "

Thanks for your order!

\"logo\"", "attachments": [ { "base64": true, "data": "iVBORw0KGgoAAAANSUhEUgAA...", "content_type": "image/png", "file_name": "logo.png", "content_disposition": "inline", "content_id": "" } ] } ``` One detail that trips people up: the `content_id` value must be wrapped in angle brackets (``), exactly as it appears in the MIME `Content-ID` header. The `cid:` reference in your HTML stays without the brackets (`cid:logo@yourdomain.com`). Set `content_disposition` to `inline` so clients render it in place rather than as a download. Full field reference: [Create Message, attachments](https://ahasend.com/docs/api-reference/messages/create-message#body-attachments). ## Switching from your current provider **If you call the API directly:** map your existing payload to AhaSend's [Create Message](https://ahasend.com/docs/send-api/send-email) endpoint and move each embedded image into the `attachments` array with `content_disposition: "inline"` and a bracketed `content_id`. The rest of the request (from, recipients, subject, html\_content) maps over directly. **If you use Symfony:** AhaSend is a drop-in replacement. There's an official Symfony Mailer bridge (symfony/aha-send-mailer), so you keep your existing `Email` code, including `->embed()` for inline images, and only change the transport. ```bash composer require symfony/aha-send-mailer ``` ```bash # .env (API transport) MAILER_DSN=ahasend+api://API_KEY@default # or SMTP MAILER_DSN=ahasend+smtp://USERNAME:PASSWORD@default ``` Your existing Symfony code keeps working unchanged: ```php $email = (new Email()) ->from('noreply@yourdomain.com') ->to('user@example.com') ->subject('Your receipt') ->html('

Thanks!

') ->embed(fopen('/path/to/logo.png', 'r'), 'logo'); ``` Symfony's `embed()` handles the Content-ID for you, so inline images just work once the DSN points at AhaSend. ## Where to find things - [Send emails with the API](https://ahasend.com/docs/send-api/send-email) - [Create Message attachments reference](https://ahasend.com/docs/api-reference/messages/create-message#body-attachments) - [SMTP integration](https://ahasend.com/docs/smtp) - [PHP and Symfony examples](https://ahasend.com/docs/smtp/php) - [Sandbox mode for testing](https://ahasend.com/docs/smtp/sandbox) Set up a domain, add your API key, and your inline images will render the way you intended. [Start for free on AhaSend →](https://dash.ahasend.com/user/register)