Vai al contenuto
Docs

Guida pratica

Allega file alle email inviate via API come contenuto base64 o da un URL, incorpora immagini inline con il Content-ID e rispetta i tipi di file consentiti e i limiti di dimensione.

Aggiornato il 1 ott 2026

Questa pagina mostra come allegare file alle email che invii con POST /emails, come contenuto codificato in base64 oppure lasciando che Emailit li scarichi da un URL. Spiega anche le immagini inline, i tipi di file consentiti e i limiti di dimensione.

Campi degli allegati

Passa un array attachments. Ogni elemento è un oggetto con questi campi:

filenamestringobbligatorio
Il nome del file mostrato al destinatario. Deve terminare con un’estensione consentita.
contentstring
Il file codificato in base64. Usa content oppure url, non entrambi.
urlstring
Un URL http:// o https:// da cui Emailit scarica il file. Usa content oppure url, non entrambi.
content_typestring
Il tipo MIME, ad esempio application/pdf. Obbligatorio con content. Con url, il valore predefinito è il Content-Type restituito dal server.
content_idstring
Un Content-ID. Se lo imposti, l’allegato diventa inline e l’HTML può mostrarlo con cid:.
encodingstringpredefinito: base64
Come è codificato content. Lascialo su base64, a meno che tu non abbia un motivo per cambiarlo.

Allega un file in base64

Leggi il file, codificalo in base64 e invialo con il suo tipo MIME.

Terminal
curl https://api.emailit.com/v2/emails \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"from\": \"Acme Billing <billing@acme.com>\",
    \"to\": \"ada@example.com\",
    \"subject\": \"Invoice INV-1042\",
    \"text\": \"Your invoice is attached.\",
    \"attachments\": [{
      \"filename\": \"INV-1042.pdf\",
      \"content\": \"$(base64 < INV-1042.pdf | tr -d '\n')\",
      \"content_type\": \"application/pdf\"
    }]
  }"

Allega un file da un URL

Invece di codificare tu il file, dai a Emailit un url. Emailit scarica il file mentre costruisce il messaggio, quindi la richiesta dura quanto il download.

JSON
{
  "from": "Acme Billing <billing@acme.com>",
  "to": "ada@example.com",
  "subject": "Invoice INV-1042",
  "text": "Your invoice is attached.",
  "attachments": [
    {
      "filename": "INV-1042.pdf",
      "url": "https://files.acme.com/invoices/INV-1042.pdf"
    }
  ]
}

L’URL deve rispettare queste regole, altrimenti la richiesta non riesce con 422 e Attachment error:

  • Usa http o https e punta a un host pubblico. Gli indirizzi privati e interni vengono rifiutati.
  • Restituisce direttamente il file con uno stato 2xx. I reindirizzamenti non vengono seguiti.
  • Il download termina entro 30 secondi.
  • Il file non supera i 25 MB, secondo il suo header Content-Length.

Emailit costruisce una copia separata del messaggio per ogni destinatario e scarica gli allegati da URL per ogni copia. Assicurati che gli URL firmati o con scadenza restino validi per tutta la richiesta, e che l’host del file regga un download per destinatario.

Incorpora immagini inline

Per mostrare un’immagine nel corpo HTML invece che come allegato separato, assegnale un content_id e fai riferimento a quell’ID con cid: in un tag img.

JSON
{
  "from": "Acme <hello@acme.com>",
  "to": "ada@example.com",
  "subject": "Your weekly report",
  "html": "<p><img src=\"cid:chart-week-40\" alt=\"Weekly signups\" width=\"600\"></p>",
  "attachments": [
    {
      "filename": "chart.png",
      "content": "iVBORw0KGgoAAAANSUhEUgAA...",
      "content_type": "image/png",
      "content_id": "chart-week-40"
    }
  ]
}

Il content_id dell’allegato e il valore dopo cid: devono corrispondere esattamente. Le immagini inline rendono il messaggio più pesante per ogni destinatario, quindi per i loghi e le altre immagini condivise di solito è meglio usare nell’HTML l’URL di un’immagine ospitata.

Limiti di dimensione

Limite Valore
Messaggio intero, dopo la codifica 40 MB. I messaggi più grandi non riescono con 413 Message too large.
Un allegato scaricato da url 25 MB
Timeout del download per url 30 secondi
Corpo JSON della richiesta 50 MB

La codifica base64 rende i file più grandi di circa un terzo, e il limite di 40 MB si applica al messaggio codificato. In pratica, mantieni la dimensione complessiva dei file sotto i 29 MB circa. Per file più grandi, caricali sul tuo storage e invia un link.

Tipi di file consentiti

filename deve terminare con una di queste estensioni. Qualsiasi altra estensione, o un nome senza estensione, non supera la convalida e restituisce 400.

Categoria Estensioni
Testo .txt, .csv, .log, .css, .ics, .xml
Immagini .jpg, .jpe, .jpeg, .gif, .png, .bmp, .psd, .tif, .tiff, .svg, .indd, .ai, .eps
Documenti .doc, .docx, .rtf, .odt, .ott, .pdf, .pub, .pages, .mobi, .epub
Audio .mp3, .m4a, .m4v, .wma, .ogg, .flac, .wav, .aif, .aifc, .aiff
Video .mp4, .mov, .avi, .mkv, .mpeg, .mpg, .wmv
Fogli di calcolo .xls, .xlsx, .ods, .numbers
Presentazioni .odp, .ppt, .pptx, .pps, .key
Archivi e contatti .zip, .vcf
Email .eml
Firme e crittografia .p7c, .p7m, .p7s, .pgp, .asc, .sig

I file eseguibili e gli script non sono nell’elenco e non si possono allegare.

Leggi gli allegati di un’email inviata

Elenca gli allegati (GET /emails/{id}/attachments) restituisce ogni allegato con filename, content_type, size, content_id, content_disposition (attachment o inline) e il content in base64. Richiede una chiave Full Access. Gli allegati vengono eliminati insieme al contenuto del messaggio quando termina il periodo di conservazione dei dati.

Risoluzione dei problemi

Errore Cosa controllare
Attachment at index 0 missing content_type (required when using 'content') Aggiungi content_type a ogni allegato in base64.
Attachment 'report.exe' has unsupported file type '.exe' Usa un’estensione consentita, oppure metti il file in un .zip.
Attachment at index 0 cannot have both 'content' and 'url' Invia solo uno dei due.
Attachment error con Failed to fetch attachment L’URL ha restituito uno stato di errore, un reindirizzamento o un timeout, oppure non è pubblico. Aprilo da un server esterno alla tua rete per controllare.
Attachment error con Attachment too large (max 25MB) Ospita il file e invia invece un link.
413 Message too large Riduci la dimensione totale degli allegati.

Questa pagina ti è stata utile?

Grazie del feedback.

Grazie, leggiamo ogni messaggio.