---
title: "Mengirim Email | Tajo"
description: "Kirim email transaksional melalui Brevo API"
url: https://tajo.io/in/docs/email-messaging/transactional-email/send-email/
markdown: https://tajo.io/in/docs/email-messaging/transactional-email/send-email.md
lang: id-ID
author: "Set Noa"
author_url: https://tajo.io/in/set-noa/
robots: noindex
---

Ajukan akses awal

Masukkan nama depan dan alamat email kerja Anda. Kami akan mengirim tautan untuk mengonfirmasi permintaan akses Tajo.

# Mengirim Email

[Set Noa](https://tajo.io/in/set-noa/)

Kirim email transaksional satuan menggunakan endpoint `/v3/smtp/email`.

## Endpoint

```http
POST /v3/smtp/email
```

## Isi permintaan

### Email dasar

```json
{
  "sender": {
    "name": "Your App",
    "email": "noreply@yourapp.com"
  },
  "to": [
    {
      "email": "user@example.com",
      "name": "John Doe"
    }
  ],
  "subject": "Welcome to our service!",
  "htmlContent": "<html><body><h1>Welcome!</h1><p>Thank you for signing up.</p></body></html>"
}
```

### Email lanjutan

```json
{
  "sender": {
    "name": "Your App",
    "email": "noreply@yourapp.com"
  },
  "to": [
    {
      "email": "user@example.com",
      "name": "John Doe"
    }
  ],
  "cc": [
    {
      "email": "cc@example.com",
      "name": "CC User"
    }
  ],
  "bcc": [
    {
      "email": "bcc@example.com"
    }
  ],
  "subject": "Order Confirmation #{{order_id}}",
  "htmlContent": "<html><body><h1>Order Confirmed</h1><p>Your order {{order_id}} has been confirmed.</p></body></html>",
  "textContent": "Your order {{order_id}} has been confirmed.",
  "params": {
    "order_id": "12345"
  },
  "tags": ["transactional", "order-confirmation"],
  "headers": {
    "X-Custom-Header": "custom-value"
  }
}
```

## Contoh kode

### JavaScript/Node.js

```javascript
const brevo = require('@getbrevo/brevo');

const apiInstance = new brevo.TransactionalEmailsApi();
apiInstance.setApiKey(brevo.TransactionalEmailsApiApiKeys.apiKey, process.env.BREVO_API_KEY);

const sendEmail = async () => {
  const sendSmtpEmail = new brevo.SendSmtpEmail();

  sendSmtpEmail.subject = "Welcome to our service!";
  sendSmtpEmail.htmlContent = "<html><body><h1>Welcome!</h1></body></html>";
  sendSmtpEmail.sender = { name: "Your App", email: "noreply@yourapp.com" };
  sendSmtpEmail.to = [{ email: "user@example.com", name: "John Doe" }];

  try {
    const result = await apiInstance.sendTransacEmail(sendSmtpEmail);
    console.log('Email sent:', result);
    return result;
  } catch (error) {
    console.error('Error sending email:', error);
    throw error;
  }
};
```

### Python

```python
import sib_api_v3_sdk
from sib_api_v3_sdk.rest import ApiException

configuration = sib_api_v3_sdk.Configuration()
configuration.api_key['api-key'] = 'YOUR_API_KEY'

api_instance = sib_api_v3_sdk.TransactionalEmailsApi(sib_api_v3_sdk.ApiClient(configuration))

send_smtp_email = sib_api_v3_sdk.SendSmtpEmail(
    to=[{"email": "user@example.com", "name": "John Doe"}],
    sender={"name": "Your App", "email": "noreply@yourapp.com"},
    subject="Welcome to our service!",
    html_content="<html><body><h1>Welcome!</h1></body></html>"
)

try:
    api_response = api_instance.send_transac_email(send_smtp_email)
    print(api_response)
except ApiException as e:
    print("Exception when calling TransactionalEmailsApi->send_transac_email: %s\n" % e)
```

### cURL

```bash
curl -X POST "https://api.brevo.com/v3/smtp/email" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "api-key: YOUR_API_KEY" \
  -d '{
    "sender": {
      "name": "Your App",
      "email": "noreply@yourapp.com"
    },
    "to": [
      {
        "email": "user@example.com",
        "name": "John Doe"
      }
    ],
    "subject": "Welcome to our service!",
    "htmlContent": "<html><body><h1>Welcome!</h1></body></html>"
  }'
```

## Respons

### Respons berhasil (201 Created)

```json
{
  "messageId": "<202301151234.12345@smtp-relay.mailin.fr>"
}
```

### Respons error

**API key tidak valid (401)**

```json
{
  "code": "unauthorized",
  "message": "Invalid API key provided"
}
```

**Format email tidak valid (400)**

```json
{
  "code": "invalid_parameter",
  "message": "Invalid email format in 'to' field"
}
```

**Batas laju terlampaui (429)**

```json
{
  "code": "too_many_requests",
  "message": "Rate limit exceeded"
}
```

## Parameter

### Parameter wajib

| Parameter | Tipe | Deskripsi |
| --- | --- | --- |
| `sender` | object | Informasi pengirim |
| `to` | array | Array berisi objek penerima |
| `subject` | string | Baris subjek email |

### Parameter opsional

| Parameter | Tipe | Deskripsi |
| --- | --- | --- |
| `htmlContent` | string | Konten HTML dari email |
| `textContent` | string | Konten teks dari email |
| `cc` | array | Penerima CC |
| `bcc` | array | Penerima BCC |
| `replyTo` | object | Alamat balasan |
| `attachments` | array | Lampiran berkas |
| `params` | object | Parameter template |
| `tags` | array | Tag email untuk pelacakan |
| `headers` | object | Header khusus |

## Variabel template

Gunakan variabel template pada subjek dan konten Anda:

```json
{
  "subject": "Welcome {{firstName}}!",
  "htmlContent": "<h1>Hello {{firstName}} {{lastName}}</h1>",
  "params": {
    "firstName": "John",
    "lastName": "Doe"
  }
}
```

## Lampiran

Sertakan lampiran berkas:

```json
{
  "attachments": [
    {
      "content": "base64_encoded_content",
      "name": "invoice.pdf"
    },
    {
      "url": "https://example.com/document.pdf",
      "name": "document.pdf"
    }
  ]
}
```

## Praktik terbaik

1. **Selalu sertakan konten HTML dan teks** untuk keterkiriman yang lebih baik
2. **Gunakan variabel template** alih-alih menggabungkan konten secara manual
3. **Sertakan informasi pengirim yang benar** agar terhindar dari filter spam
4. **Tambahkan tag** untuk pelacakan dan analitik
5. **Validasi alamat email** sebelum mengirim
6. **Tangani error dengan baik** menggunakan logika percobaan ulang

## Batas laju

- **Batas laju API**: pada tingkatan umum, yang diperoleh setiap paket, endpoint ini mengizinkan 1.000 permintaan per detik dan 3.600.000 per jam. Tingkatan lanjutan (Professional dan Enterprise) mengizinkan 2.000 per detik, dan tingkatan diperluas (Enterprise) 6.000.
- **Volume pengiriman**: jumlah email yang dapat Anda kirim ditentukan oleh paket Brevo Anda, terpisah dari batas laju.

Lihat [Batas laju](https://tajo.io/in/docs/rate-limits/) dan [halaman batas laju](https://developers.brevo.com/docs/api-limits) Brevo.

## Pelacakan

Email yang dikirim melalui endpoint ini otomatis dilacak untuk:

- Status pengiriman
- Rasio buka
- Pelacakan klik
- Penanganan bounce

Lihat analitik terperinci di dasbor Brevo Anda pada **Statistics** → **Transactional**.

## Endpoint terkait

- Template email
- Lampiran
- [Statistik email](https://tajo.io/in/docs/analytics-reporting/)
