วิธีใช้ Brevo APIs ทำ SMS Marketing

Ashley Innocent

Ashley Innocent

24 March 2026

วิธีใช้ Brevo APIs ทำ SMS Marketing

สรุปโดยย่อ

API ของ Brevo ช่วยให้คุณสามารถส่งอีเมลการตลาด อีเมลธุรกรรม และข้อความ SMS ได้ด้วยโปรแกรม คุณต้องยืนยันตัวตนด้วย API Key ส่งคำขอไปยัง api.brevo.com และใช้ Webhook เพื่อติดตามการนำส่งและการมีส่วนร่วม สำหรับการทดสอบ ให้ใช้ Apidog เพื่อตรวจสอบความถูกต้องของ Payload, ทดสอบตัวจัดการ Webhook และเพื่อให้แน่ใจว่าการผสานรวมของคุณจัดการการตีกลับและการยกเลิกการสมัครได้อย่างถูกต้อง

บทนำ

Brevo (เดิมชื่อ Sendinblue) ประมวลผลอีเมลนับล้านฉบับทุกวันสำหรับธุรกิจกว่า 500,000 แห่ง โดยจัดการแคมเปญการตลาด อีเมลธุรกรรม การตลาด SMS และเวิร์กโฟลว์อัตโนมัติ

API อีเมลดูเหมือนจะง่าย เพียงแค่ส่งข้อความก็เสร็จสิ้น แต่ระบบอีเมลที่ใช้งานจริงจำเป็นต้องจัดการกับการตีกลับ (Bounce), การร้องเรียนสแปม, การยกเลิกการสมัคร (Unsubscribe) และการกำหนดเวลาการส่ง Brevo จัดการความซับซ้อนเหล่านี้ให้คุณโดยที่คุณไม่ต้องทำเอง

API ครอบคลุมการใช้งานหลักสามกรณี:

💡
หากคุณกำลังผสานรวมอีเมลเข้ากับแอปของคุณ Apidog จะช่วยคุณทดสอบเทมเพลต ตรวจสอบความถูกต้องของ Payload Webhook และตรวจสอบให้แน่ใจว่าการผสานรวมของคุณทำงานได้กับไคลเอนต์อีเมลทั้งหมด คุณสามารถจำลองการตอบสนองของ Brevo ระหว่างการพัฒนาและทดสอบการจัดการข้อผิดพลาดโดยไม่ต้องส่งอีเมลจริง
ปุ่ม
ปุ่ม

การยืนยันตัวตนและการตั้งค่า

รับ API Key

  1. เข้าสู่ระบบ Brevo
  2. ไปที่ SMTP & API → API Keys
  3. สร้างคีย์ใหม่พร้อมสิทธิ์ที่เหมาะสม
  4. จัดเก็บไว้อย่างปลอดภัย

API Key จะอยู่ในส่วนหัว api-key:

curl -X GET "https://api.brevo.com/v3/account" \
  -H "accept: application/json" \
  -H "api-key: your-api-key-here"

Base URL ของ API

คำขอทั้งหมดจะส่งไปที่:

https://api.brevo.com/v3/

ข้อจำกัดด้านอัตรา (Rate limits)

Brevo จำกัดคำขอตามแผน:

ตรวจสอบส่วนหัว X-RateLimit-Remaining เพื่อติดตามการใช้งาน

การส่งอีเมลธุรกรรม

อีเมลธุรกรรมคือข้อความแต่ละฉบับที่ถูกทริกเกอร์โดยการกระทำของผู้ใช้ เช่น การรีเซ็ตรหัสผ่าน การยืนยันคำสั่งซื้อ อีเมลต้อนรับ

ส่งอีเมลง่ายๆ

curl -X POST "https://api.brevo.com/v3/smtp/email" \
  -H "accept: application/json" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "sender": {
      "name": "Your App",
      "email": "noreply@yourapp.com"
    },
    "to": [
      {
        "email": "user@example.com",
        "name": "John Doe"
      }
    ],
    "subject": "Welcome to Our Platform",
    "htmlContent": "<html><body><h1>Welcome!</h1><p>Thanks for signing up.</p></body></html>",
    "textContent": "Welcome! Thanks for signing up."
  }'

การตอบสนอง:

{
  "messageId": "<20260324123456.123456@relay.brevo.com>"
}

การใช้เทมเพลต

สร้างเทมเพลตในตัวแก้ไขแบบภาพของ Brevo จากนั้นส่งโดยใช้ ID:

curl -X POST "https://api.brevo.com/v3/smtp/email" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "templateId": 15,
    "to": [
      {
        "email": "user@example.com",
        "name": "John Doe"
      }
    ],
    "params": {
      "name": "John",
      "order_number": "ORD-12345",
      "tracking_url": "https://tracking.example.com/ORD-12345"
    }
  }'

ตัวแปรในเทมเพลตใช้เครื่องหมายวงเล็บปีกกาคู่:

<p>Hi {{params.name}},</p>
<p>Your order {{params.order_number}} has shipped.</p>
<p><a href="{{params.tracking_url}}">Track your package</a></p>

ส่งพร้อมไฟล์แนบ

const response = await fetch('https://api.brevo.com/v3/smtp/email', {
  method: 'POST',
  headers: {
    'api-key': process.env.BREVO_API_KEY,
    'content-type': 'application/json'
  },
  body: JSON.stringify({
    sender: { name: 'Your App', email: 'noreply@yourapp.com' },
    to: [{ email: 'user@example.com' }],
    subject: 'Your Invoice',
    htmlContent: '<p>Please find your invoice attached.</p>',
    attachment: [
      {
        name: 'invoice.pdf',
        content: base64EncodedPdfContent
      }
    ]
  })
})

แคมเปญการตลาด

อีเมลการตลาดจะถูกส่งไปยังรายชื่อผู้ติดต่อ Brevo จัดการลิงก์ยกเลิกการสมัคร การตั้งเวลา และการวิเคราะห์

สร้างแคมเปญ

curl -X POST "https://api.brevo.com/v3/emailCampaigns" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "name": "March Newsletter",
    "subject": "What'\''s New in March",
    "sender": {
      "name": "Your Brand",
      "email": "newsletter@yourbrand.com"
    },
    "type": "classic",
    "htmlContent": "<html><body>Newsletter content here...</body></html>",
    "recipients": {
      "listIds": [12, 15]
    },
    "scheduledAt": "2026-03-25T09:00:00+00:00"
  }'

ส่งทันที

curl -X POST "https://api.brevo.com/v3/emailCampaigns/{campaignId}/sendNow" \
  -H "api-key: your-api-key"

รับสถิติแคมเปญ

curl -X GET "https://api.brevo.com/v3/emailCampaigns/{campaignId}" \
  -H "api-key: your-api-key"

การตอบสนองรวมถึง:

{
  "statistics": {
    "delivered": 4850,
    "opened": 1455,
    "clicked": 291,
    "unsubscribed": 12,
    "bounces": 150
  }
}

การจัดการผู้ติดต่อ

ผู้ติดต่อคือบุคคลที่คุณส่งอีเมลถึง จัดระเบียบพวกเขาในรายการและเพิ่มคุณสมบัติที่กำหนดเอง

สร้างผู้ติดต่อ

curl -X POST "https://api.brevo.com/v3/contacts" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "email": "new.user@example.com",
    "attributes": {
      "FIRSTNAME": "Jane",
      "LASTNAME": "Smith",
      "PLAN": "premium"
    },
    "listIds": [12, 15],
    "updateEnabled": true
  }'

แฟล็ก updateEnabled: true จะอัปเดตผู้ติดต่อที่มีอยู่แทนที่จะเกิดข้อผิดพลาด

ดูรายละเอียดผู้ติดต่อ

curl -X GET "https://api.brevo.com/v3/contacts/user@example.com" \
  -H "api-key: your-api-key"

เพิ่มเข้าในรายการ

curl -X POST "https://api.brevo.com/v3/contacts/lists/12/contacts/add" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "emails": ["user1@example.com", "user2@example.com"]
  }'

ลบออกจากรายการ

curl -X DELETE "https://api.brevo.com/v3/contacts/lists/12/contacts/remove" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "emails": ["user@example.com"]
  }'

ยกเลิกการสมัครของผู้ติดต่อ

curl -X PUT "https://api.brevo.com/v3/contacts/user@example.com" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "emailBlacklisted": true
  }'

การตลาด SMS

Brevo ส่งข้อความ SMS ทั่วโลกผ่าน SMS API ของพวกเขา

ส่ง SMS

curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "sender": "YourApp",
    "recipient": "+15551234567",
    "content": "Your verification code is: 123456",
    "type": "transactional"
  }'

ส่ง SMS การตลาด

curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "sender": "YourBrand",
    "recipient": "+15551234567",
    "content": "Flash sale! 50% off today only. Reply STOP to unsubscribe.",
    "type": "marketing"
  }'

ดูสถิติ SMS

curl -X GET "https://api.brevo.com/v3/transactionalSMS/statistics?startDate=2026-03-01&endDate=2026-03-31" \
  -H "api-key: your-api-key"

Webhooks สำหรับการติดตาม

Webhooks จะแจ้งเตือนแอปของคุณเกี่ยวกับเหตุการณ์อีเมล: นำส่งแล้ว, เปิดอ่านแล้ว, คลิกแล้ว, ตีกลับ, ยกเลิกการสมัคร

กำหนดค่า Webhooks

ในแดชบอร์ดของ Brevo: การตั้งค่า → Webhooks → เพิ่ม Webhook

เหตุการณ์ที่ต้องการติดตาม:

จัดการ Payload ของ Webhook

app.post('/webhooks/brevo', (req, res) => {
  const event = req.body
  
  switch (event.event) {
    case 'delivered':
      console.log(`Email ${event.messageId} delivered to ${event.email}`)
      break
    case 'opened':
      console.log(`Email opened by ${event.email} at ${event.date}`)
      break
    case 'bounced':
      console.log(`Bounce: ${event.email} - ${event.reason}`)
      // ทำเครื่องหมายผู้ติดต่อว่าไม่ถูกต้อง
      markContactBounced(event.email)
      break
    case 'spam':
      console.log(`Spam complaint from ${event.email}`)
      // ลบออกจากรายการทั้งหมด
      removeFromAllLists(event.email)
      break
    case 'unsubscribed':
      console.log(`Unsubscribed: ${event.email}`)
      break
  }
  
  res.status(200).send('OK')
})

การทดสอบด้วย Apidog

API อีเมลมีโหมดความล้มเหลวที่ซับซ้อน คุณจำเป็นต้องทดสอบเทมเพลต การตีกลับ และ Webhook Apidog ช่วยคุณได้

1. การจำลองการส่งอีเมล

ในระหว่างการพัฒนา อย่าส่งอีเมลจริง จำลองการตอบสนอง:

pm.test('Email API accepts valid payload', () => {
  const response = pm.response.json()
  pm.expect(response).to.have.property('messageId')
  pm.expect(response.messageId).to.match(/<.*@relay\.brevo\.com>/)
})

2. ทดสอบการจัดการ Webhook

สร้าง Payload Webhook จำลองใน Apidog:

{
  "event": "bounced",
  "email": "invalid@example.com",
  "messageId": "<12345@relay.brevo.com>",
  "reason": "hard_bounce",
  "date": "2026-03-24T12:00:00Z",
  "subject": "Welcome to Our Platform"
}

ส่งไปยัง Endpoint ของ Webhook ของคุณและตรวจสอบว่าโค้ดของคุณจัดการได้

3. ตรวจสอบความถูกต้องของเทมเพลต

จัดเก็บ Payload ของเทมเพลตและทดสอบว่าตัวแปรถูกแทนที่อย่างถูกต้อง:

pm.test('Template variables are valid', () => {
  const payload = pm.request.body.toJSON()
  pm.expect(payload.params).to.have.property('name')
  pm.expect(payload.params).to.have.property('order_number')
})

4. การแยกสภาพแวดล้อม

# การพัฒนา
BREVO_API_KEY: xkeysib-dev-xxx
BREVO_SENDER: dev@yourapp.com

# การใช้งานจริง
BREVO_API_KEY: xkeysib-prod-xxx
BREVO_SENDER: noreply@yourapp.com

ทดสอบ Brevo email APIs ด้วย Apidog - ฟรี

ข้อผิดพลาดทั่วไปและการแก้ไข

400 Bad Request - ข้อมูลที่จำเป็นขาดหายไป

สาเหตุ: Payload ขาดข้อมูลที่จำเป็น

วิธีแก้ไข: ตรวจสอบข้อความแสดงข้อผิดพลาดสำหรับรายละเอียดเฉพาะ:

{
  "code": "invalid_parameter",
  "message": "sender.email is required"
}

401 Unauthorized (ไม่ได้รับอนุญาต)

สาเหตุ: API Key ไม่ถูกต้องหรือขาดหายไป

วิธีแก้ไข: ตรวจสอบว่าส่วนหัว api-key ได้รับการตั้งค่าอย่างถูกต้อง ตรวจสอบว่าคีย์ยังไม่ถูกเพิกถอน

402 Payment Required (ต้องชำระเงิน)

สาเหตุ: บัญชีเกินขีดจำกัดหรือไม่มีเครดิต

วิธีแก้ไข:

429 Too Many Requests (คำขอมากเกินไป)

สาเหตุ: เกินขีดจำกัดอัตรา

วิธีแก้ไข: ใช้ Exponential Backoff:

async function sendWithRetry(email, retries = 3) {
  for (let i = 0; i < retries; i++) {
    const response = await sendEmail(email)
    if (response.status === 429) {
      await sleep(Math.pow(2, i) * 1000)
    } else {
      return response
    }
  }
  throw new Error('Rate limit exceeded')
}

404 Contact not found (ไม่พบผู้ติดต่อ)

สาเหตุ: พยายามอัปเดตผู้ติดต่อที่ไม่มีอยู่

วิธีแก้ไข: ใช้ updateEnabled: true เมื่อสร้างผู้ติดต่อ:

{
  "email": "new@example.com",
  "updateEnabled": true
}

สิ่งนี้จะสร้างหรืออัปเดตผู้ติดต่อ

ทางเลือกและการเปรียบเทียบ

คุณสมบัติ Brevo SendGrid Mailchimp Postmark
ราคา ฟรี 300 อีเมล/วัน ฟรี 100 อีเมล/วัน ฟรี 500 อีเมล/เดือน ฟรี 100 อีเมล/เดือน
อีเมลการตลาด ใช่ ใช่ ใช่ ไม่
อีเมลธุรกรรม ใช่ ใช่ จำกัด ใช่ (เฉพาะทาง)
SMS ใช่ ไม่ ไม่ ไม่
ระบบอัตโนมัติ ใช่ ใช่ ใช่ จำกัด
ตัวแก้ไขเทมเพลต แบบภาพ + โค้ด โค้ด แบบภาพ โค้ด

Brevo โดดเด่นในด้านการรองรับอีเมลและ SMS แบบรวมในราคาที่แข่งขันได้

กรณีการใช้งานจริง

กระบวนการสั่งซื้อ E-commerce ร้านค้าออนไลน์ใช้ Brevo สำหรับ: การยืนยันคำสั่งซื้อ (ธุรกรรม), การแจ้งเตือนการจัดส่ง (ธุรกรรม), การกู้คืนรถเข็นที่ถูกละทิ้ง (ระบบการตลาดอัตโนมัติ) และโปรโมชันรายสัปดาห์ (แคมเปญการตลาด) ทั้งหมดนี้จากการผสานรวมเพียงครั้งเดียว

การเริ่มต้นใช้งาน SaaS เครื่องมือจัดการโครงการส่งอีเมลต้อนรับ การรีเซ็ตรหัสผ่าน และคำเชิญทีมผ่าน API ธุรกรรม อีเมลการตลาดจะประกาศคุณสมบัติใหม่แก่ผู้ใช้ที่เลือกรับ

การยืนยัน SMS แอปพลิเคชันฟินเทคใช้ SMS API ของ Brevo สำหรับรหัสยืนยันตัวตนแบบสองปัจจัย Endpoint SMS ธุรกรรมจะส่งรหัสภายในไม่กี่วินาที และ Webhook จะติดตามความล้มเหลวในการส่งสำหรับการลองใหม่

สรุป

สิ่งที่คุณได้เรียนรู้มีดังนี้:

ขั้นตอนต่อไปของคุณ:

  1. สร้างบัญชี Brevo และรับ API Key
  2. ส่งอีเมลธุรกรรมฉบับแรกของคุณ
  3. สร้างเทมเพลตในตัวแก้ไขแบบภาพ
  4. ตั้งค่าตัวจัดการ Webhook สำหรับการตีกลับและการยกเลิกการสมัคร
  5. ทดสอบด้วย Apidog ในระหว่างการพัฒนา

ทดสอบ Brevo email APIs ด้วย Apidog - ฟรี

ปุ่ม

คำถามที่พบบ่อย

Brevo และ Sendinblue ต่างกันอย่างไร?ผลิตภัณฑ์เดียวกัน ชื่อใหม่ Sendinblue เปลี่ยนชื่อเป็น Brevo ในปี 2023 API ยังคงใช้ api.brevo.com แต่คุณจะเห็นการอ้างอิง Sendinblue ในเอกสารเก่ากว่า

ฉันสามารถส่งอีเมลได้ฟรีกี่ฉบับ? 300 อีเมลต่อวันในแผนฟรี นั่นคือ 9,000 อีเมลต่อเดือน หากต้องการมากกว่านี้ ให้อัปเกรดเป็นแผนแบบชำระเงินเริ่มต้นที่ 25 ดอลลาร์ต่อเดือนสำหรับ 20,000 อีเมล

ฉันสามารถใช้ Brevo สำหรับอีเมลเย็น (Cold Emails) ได้หรือไม่?ในทางเทคนิคแล้วทำได้ แต่มีความเสี่ยง อีเมลเย็นมีอัตราการตีกลับและสแปมสูง Brevo ตรวจสอบชื่อเสียงผู้ส่ง อัตราการร้องเรียนสูงจะทำให้บัญชีถูกระงับ ควรอุ่นเครื่องโดเมนของคุณก่อนและปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดสำหรับการส่งอีเมล

ฉันจะจัดการกับการตีกลับของอีเมลได้อย่างไร?รอฟัง bounced webhooks การตีกลับแบบ Hard (อีเมลไม่ถูกต้อง) ควรกำจัดผู้ติดต่อออกอย่างถาวร การตีกลับแบบ Soft (กล่องจดหมายเต็ม, ปัญหาชั่วคราว) สามารถลองใหม่ได้ ติดตามอัตราการตีกลับ – หากเกิน 5% ชื่อเสียงผู้ส่งของคุณจะลดลง

อีเมลการตลาดและอีเมลธุรกรรมต่างกันอย่างไร?อีเมลธุรกรรมถูกทริกเกอร์โดยการกระทำของผู้ใช้ (การซื้อ, การลงทะเบียน) และส่งไปยังผู้รับคนเดียว อีเมลการตลาดเป็นแคมเปญที่ส่งไปยังผู้รับจำนวนมากพร้อมกัน Brevo แยกความแตกต่างเหล่านี้ออกไปเพื่อเหตุผลด้านการนำส่งและการปฏิบัติตามกฎระเบียบ

ฉันจะเพิ่มลิงก์ยกเลิกการสมัครได้อย่างไร?Brevo จะเพิ่มลิงก์ยกเลิกการสมัครลงในอีเมลการตลาดโดยอัตโนมัติ สำหรับอีเมลธุรกรรม ให้เพิ่มลิงก์ของคุณเอง:

<a href="{{ unsubscribe_url }}">Unsubscribe</a>

ฉันสามารถส่งอีเมลจากโดเมนของฉันเองได้หรือไม่?ได้ ตั้งค่าเรคคอร์ด SPF, DKIM และ DMARC Brevo จะให้ค่าเหล่านี้ใน การตั้งค่า → ผู้ส่งและ IP หากไม่มีการยืนยันตัวตนที่เหมาะสม อีเมลอาจถูกส่งไปยังกล่องสแปม

ฉันจะกำหนดเวลาอีเมลในโซนเวลาที่ระบุได้อย่างไร?ใช้พารามิเตอร์ scheduledAt พร้อมการประทับเวลา ISO 8601:

{
  "scheduledAt": "2026-03-25T09:00:00-05:00"
}

จะเกิดอะไรขึ้นหากฉันถึงขีดจำกัดอัตรา (Rate Limit)?คุณจะได้รับข้อผิดพลาด 429 การตอบสนองจะรวมส่วนหัว X-RateLimit-Reset พร้อมจำนวนวินาทีก่อนที่จะรีเซ็ต ใช้วิธี Exponential Backoff หรือจัดคิวอีเมลไว้สำหรับส่งภายหลัง

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API