OwnMaily Docs

Image Uploads

Getting Started

You can upload images directly in the campaign editor. OwnMaily stores them on your server and embeds them into your emails automatically.

Limits and formats

  • Max file size: 5 MB per image
  • Supported formats: JPEG, PNG, GIF, WebP

The server detects the actual file format by reading the file content, not the filename extension. A file renamed to .png that is actually a GIF will be saved as a GIF.

No in-editor editing

OwnMaily does not offer image cropping, resizing, or any other editing. Prepare your images to the correct dimensions and file size in an external tool before uploading. Images are inserted at their natural size (constrained to the email width).

How image URLs work

When you upload an image, OwnMaily stores a relative path in your campaign HTML. At send time, it converts that relative path to a full URL using your Installation URL - for example, https://mail.yourdomain.com/uploads/images/abc123.jpg.

This means images load correctly in email clients as long as your server is publicly reachable. If your Installation URL is wrong or your server is behind a firewall, images will not load.

Image URLs are not authenticated. This is intentional - email clients (Gmail, Apple Mail, Outlook) need to fetch them without credentials when rendering your emails. Filenames are random 32-character hex strings, so they are not guessable, but the content is not secret.

Cloud platform warning

On Railway and Render free tiers, uploaded images are lost on every deploy. These platforms use ephemeral filesystems that are wiped when your container restarts or a new deploy happens. Images you uploaded will disappear and will show as broken in previously sent emails.

If you use image uploads in campaigns, self-hosting on a VPS with Docker Compose is the recommended approach. The Docker Compose setup uses a named volume for uploads that persists across restarts and updates.