Lampiran

Unggah file dan lampirkan ke email keluar. Email masuk dengan lampiran disimpan secara otomatis dan dapat diakses melalui API.

Ikhtisar

AgentSend menangani lampiran file di kedua arah. Untuk email keluar, Anda mengunggah file terlebih dahulu untuk mendapatkan ID lampiran, lalu teruskan ID tersebut saat mengirim pesan. Untuk email masuk, lampiran apa pun yang disertakan pengirim disimpan secara otomatis dan ditampilkan di objek pesan — tidak perlu pekerjaan tambahan.

Lampiran disimpan dengan aman dan disajikan melalui URL presigned berumur pendek. Tautan unduhan kedaluwarsa setelah 1 jam — ambil URL baru dari API saat Anda perlu mengakses file.

Mengunggah Lampiran

Kirim request POST ke /attachments dengan file sebagai multipart/form-data. Respons mengembalikan objek lampiran dengan id yang dapat Anda gunakan saat mengirim pesan.

curl
curl -X POST https://api.agentsend.io/attachments \
  -H "x-api-key: $AGENTSEND_API_KEY" \
  -F "file=@/path/to/report.pdf"
javascript
const form = new FormData();
form.append("file", fileBlob, "report.pdf");

const res = await fetch("https://api.agentsend.io/attachments", {
  method: "POST",
  headers: { "x-api-key": process.env.AGENTSEND_API_KEY },
  body: form,
});

const attachment = await res.json();
console.log(attachment.id); // e.g. "att_a1b2c3d4"

Properti Lampiran

Setiap objek lampiran berisi field berikut:

Field Tipe Deskripsi
id string Pengenal lampiran unik (prefiks att_).
filename string Nama file asli seperti yang diunggah atau diterima.
contentType string Tipe MIME, misalnya application/pdf atau image/png.
size number Ukuran file dalam byte.
url string URL unduhan presigned. Kedaluwarsa setelah 1 jam.
createdAt string Timestamp ISO 8601 saat lampiran disimpan.

Melampirkan ke Pesan

Teruskan array attachmentIds di body pesan saat mengirim. Anda dapat mereferensikan beberapa lampiran dalam satu pesan.

javascript
// 1. Upload the file
const form = new FormData();
form.append("file", fileBlob, "invoice.pdf");
const { id: attachmentId } = await fetch("https://api.agentsend.io/attachments", {
  method: "POST",
  headers: { "x-api-key": process.env.AGENTSEND_API_KEY },
  body: form,
}).then(r => r.json());

// 2. Send the message with the attachment
await fetch(`https://api.agentsend.io/inboxes/${inboxId}/messages`, {
  method: "POST",
  headers: {
    "x-api-key": process.env.AGENTSEND_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    to: ["customer@example.com"],
    subject: "Your invoice",
    bodyText: "Please find your invoice attached.",
    attachmentIds: [attachmentId],
  }),
});

Mengambil Lampiran

Ambil satu lampiran berdasarkan ID dengan GET /attachments/{id}. Respons mencakup url presigned baru yang dapat Anda gunakan untuk mengunduh file.

javascript
const attachment = await fetch(
  `https://api.agentsend.io/attachments/${attachmentId}`,
  { headers: { "x-api-key": process.env.AGENTSEND_API_KEY } }
).then(r => r.json());

// Download the file using the presigned URL
const fileData = await fetch(attachment.url).then(r => r.arrayBuffer());

Lampiran Masuk

Saat email masuk tiba dengan lampiran, AgentSend menyimpan setiap file secara otomatis. Objek pesan akan menyertakan array attachments — setiap entri berisi metadata yang diperlukan untuk mengidentifikasi dan mengunduh file.

json — inbound message (excerpt)
{
  "id": "msg_xyz",
  "subject": "Here's the contract",
  "attachments": [
    {
      "id": "att_a1b2c3",
      "filename": "contract.pdf",
      "contentType": "application/pdf",
      "size": 204800
    }
  ]
}

Untuk mengunduh lampiran masuk, teruskan id-nya ke GET /attachments/{id} untuk menerima URL unduhan presigned seperti yang ditunjukkan di bagian Mengambil Lampiran di atas.

Batas Ukuran

Ukuran maksimum untuk satu lampiran adalah 25 MB. Ini berlaku untuk unggahan dan lampiran masuk — file yang melebihi batas ini pada email masuk dibuang dan catatan pemotongan ditambahkan ke pesan.

Banyak server email penerima juga memberlakukan batas ukuran lampiran mereka sendiri (sering 10–25 MB). Jaga lampiran tetap kecil atau pertimbangkan untuk menautkan ke file yang di-hosting secara eksternal untuk keterkiriman terbaik.