---
title: "ดึง OTP จาก Gmail ผ่าน API สำหรับทดสอบแอป"
description: "วิธีอ่าน OTP จากกล่อง Gmail ของคุณผ่าน Mailera API ตั้งค่ารหัสผ่านสำหรับแอป จำกัดสิทธิ์คีย์ และกรองข้อความให้ตรงกับรอบทดสอบ"
url: https://mailera.app/th/blog/gmail-otp-api
published: 2026-10-25
updated: 2026-10-25
---

# ดึง OTP จาก Gmail ผ่าน API สำหรับทดสอบแอป

เชื่อมต่อกล่อง Gmail ทดสอบของคุณกับ Mailera แล้วอ่านรหัสยืนยันผ่าน REST API พร้อมตรวจผู้ส่งและเวลารับข้อความ เพื่อไม่หยิบรหัสจากคำขอเก่ามาใช้

## ดึง OTP จาก Gmail ผ่าน API ได้อย่างไร?

เชื่อมต่อกล่อง Gmail ที่คุณใช้ทดสอบกับ Mailera แล้วเรียก `GET /mailboxes/{id}/otp` ด้วยคีย์ที่มีสิทธิ์ `read` ปลายทางรองรับพารามิเตอร์ `from`, `subject` และ `since_minutes` ก่อนนำรหัสไปใช้ ให้ตรวจผู้ส่ง หัวเรื่อง และเทียบ `received_at` ในรายการข้อความกับเวลาเริ่มคำขอทดสอบ

OTP ในที่นี้คือรหัสยืนยันที่แอปส่งเข้ากล่อง Gmail ของคุณเพื่อใช้ในขั้นตอนทดสอบ ไม่ใช่การรับรหัสทาง SMS และไม่ใช่ขั้นตอนยืนยันเพื่อเข้าบัญชี Google

เส้นทางนี้ใช้ Mailera REST API จึงไม่ต้องเปิดใช้ Gmail API เพื่อทำตามขั้นตอนด้านล่าง การเชื่อมต่อ Gmail ของ Mailera ใช้รหัสผ่านสำหรับแอป ส่วน [Gmail API ของ Google](https://developers.google.com/workspace/gmail/api/guides) เป็นอีกเส้นทางหนึ่งสำหรับเข้าถึงกล่อง Gmail โดยตรง อย่านำวิธีตั้งค่าสองเส้นทางนี้มาปะปนกัน

![ลำดับการส่งอีเมลเข้า Gmail การอ่าน OTP ผ่าน Mailera และการตรวจรหัสที่แอปทดสอบ](https://mailera.app/media/045c217b7fc7652c/otp-gmail-api-gmail-otp-flow-th-1200.jpg)
_Mailera อ่านรหัสจากอีเมล ส่วนแอปต้นทางเป็นผู้ตรวจว่ารหัสใช้กับคำขอนั้นได้หรือไม่_

[Mailera เชื่อมต่อกล่องจดหมายที่มีอยู่แล้ว](https://mailera.app/th/product) แล้วให้แอปอ่านผ่าน API หากต้องการภาพรวมที่ไม่จำกัดเฉพาะ Gmail ดู[คู่มืออ่าน OTP จากกล่องจดหมายของคุณ](https://mailera.app/th/blog/email-otp-api) ส่วนขั้นตอนต่อไปนี้เน้น Gmail และการเลือกข้อความให้ตรงรอบทดสอบ

## ก่อนเชื่อมต่อ Gmail ต้องเตรียมอะไรบ้าง?

ใช้เฉพาะกล่อง Gmail ทดสอบที่คุณเป็นเจ้าของ และแอปที่คุณมีสิทธิ์ทดสอบ เตรียมกล่องนี้ไว้แยกจากอีเมลส่วนตัว เพื่อไม่ให้สคริปต์ทดสอบต้องเข้าถึงข้อความที่ไม่เกี่ยวข้อง

Google กำหนดให้เปิดการยืนยันสองขั้นตอนก่อนใช้รหัสผ่านสำหรับแอป (app password) ดู[เงื่อนไขรหัสผ่านสำหรับแอปของ Google](https://support.google.com/accounts/answer/185833) และ[วิธีเปิดการยืนยันสองขั้นตอน](https://support.google.com/accounts/answer/185839) ก่อนเริ่มเชื่อมต่อ

หากไม่เห็นตัวเลือกสร้างรหัสผ่านสำหรับแอป ให้ตรวจว่าบัญชีใช้เฉพาะคีย์ความปลอดภัยสำหรับการยืนยันสองขั้นตอนหรือเปิด Advanced Protection อยู่หรือไม่ บัญชีที่ทำงาน สถานศึกษา หรือองค์กรก็อาจไม่มีตัวเลือกนี้ สำหรับ Google Workspace ให้ตรวจนโยบายกับผู้ดูแล หากเปิดการยืนยันสองขั้นตอนไม่ได้บนบัญชีองค์กรหรือสถานศึกษา Google แนะนำให้ติดต่อผู้ดูแลระบบ ไม่ควรลดระดับความปลอดภัยของบัญชีเพื่อให้เชื่อมต่อได้

ข้อมูลลับสองตัวนี้ทำหน้าที่ต่างกัน:

| ข้อมูลลับ | ใช้ที่ไหน | หน้าที่ |
| --- | --- | --- |
| รหัสผ่านสำหรับแอป Google | ตอนเชื่อมต่อ Gmail กับ Mailera | ให้ Mailera เชื่อมต่อกล่องจดหมาย |
| คีย์ API ของ Mailera | ในส่วนหัว `Authorization` ของคำขอ REST | ให้สคริปต์เข้าถึงกล่องจดหมายตามขอบเขตและสิทธิ์ของคีย์ |

อย่าใส่รหัสผ่านเข้าสู่ระบบ Google ตามปกติแทนรหัสผ่านสำหรับแอป และอย่าใช้รหัสผ่านสำหรับแอปเป็น Bearer token ดูรายละเอียดได้ที่[การเชื่อมต่อ Gmail กับ Mailera](https://mailera.app/th/providers/gmail) หากต้องจัดการข้อมูลลับเหล่านี้ให้หลายงานทดสอบ ดู[แนวทางใช้รหัสผ่านสำหรับแอปกับกล่องจดหมายของเอเจนต์](https://mailera.app/th/blog/email-app-passwords)

## เชื่อมต่อ Gmail และสร้างคีย์อ่านอีเมลอย่างไร?

### 1. เพิ่มกล่อง Gmail ทดสอบ

ให้สมาชิกที่มีบทบาท Admin หรือ Leader เปิด **กล่องจดหมาย → เพิ่มกล่องจดหมาย** เลือกแท็บ **กล่องจดหมายเดียว** แล้วกรอก Gmail ของคุณในช่อง **ที่อยู่อีเมล**

ตรวจว่าผู้ให้บริการที่ระบบตรวจพบคือ Gmail หากต้องเลือกเอง ให้ใช้ส่วน **หรือเลือกผู้ให้บริการ** แล้วกด **ดำเนินการต่อ**

### 2. ทดสอบการเชื่อมต่อ

ในส่วน **รายละเอียดการเชื่อมต่อ** กรอกรหัสผ่านสำหรับแอปในช่อง **รหัสผ่าน** เลือก **กลุ่มกล่องจดหมาย** สำหรับงานทดสอบ แล้วกด **ทดสอบและเชื่อมต่อ** ขั้นตอนนี้ทดสอบการเชื่อมต่อโดยไม่ส่งอีเมล

หากรับอีเมลได้แต่ทดสอบฝั่งส่งไม่ผ่าน คุณเลือก **บันทึกแบบรับอย่างเดียว** ได้ งานอ่าน OTP ไม่จำเป็นต้องส่งอีเมลจากกล่องนี้ผ่าน Mailera หลังเชื่อมต่อสำเร็จ ระบบจะโหลดข้อความครั้งแรกภายในช่วงเก็บรักษา โดยเริ่มจากข้อความใหม่กว่า

![หน้าเชื่อมต่อ Gmail ใน Mailera พร้อมช่องรหัสผ่านสำหรับแอปและปุ่มทดสอบและเชื่อมต่อ](https://mailera.app/media/9c0d95de127efb0d/oauth-add-mailbox-th-1200.jpg)
_ช่องรหัสผ่านของการเชื่อมต่อ Gmail ใช้รหัสผ่านสำหรับแอป ไม่ใช่รหัสผ่านเข้าสู่ระบบ Google_

### 3. สร้างคีย์เฉพาะกลุ่มทดสอบ

เปิด **การตั้งค่า** ไปที่แท็บ API key แล้วกด **สร้าง API key** ตั้ง **ชื่อที่สื่อความหมาย** ให้ระบุได้ว่าใช้กับงานใด เช่น บอตทดสอบการยืนยันอีเมล

ใน **ขอบเขตกล่องจดหมาย** เลือกกลุ่มทดสอบกลุ่มเดียวที่กล่อง Gmail นี้อยู่ เลือกสิทธิ์ “Read” ซึ่งตรงกับ scope `read` และกำหนด **ระยะเวลาที่ใช้ได้** ให้เหมาะกับงาน ไม่เพิ่มสิทธิ์ “Send messages” หรือ “Manage mailboxes” หากสคริปต์มีหน้าที่อ่านรหัสเท่านั้น

เมื่อเห็น **สร้าง API key แล้ว — คัดลอกตอนนี้** ให้บันทึกคีย์ในระบบจัดการข้อมูลลับ เพราะค่าคีย์จะแสดงเพียงครั้งเดียว จากนั้นส่งค่าเข้าสู่สภาพแวดล้อมของสคริปต์เป็น `$MAILERA_API_KEY` ดูแนวทางเชื่อมต่อแอปเพิ่มเติมได้ที่[หน้าสำหรับนักพัฒนา](https://mailera.app/th/developers)

![การสร้างคีย์ API ที่จำกัดเฉพาะกลุ่มทดสอบและมีสิทธิ์อ่าน](https://mailera.app/media/a8160b488a693dcc/otp-gmail-api-gmail-read-api-key-hi-1200.jpg)
_งานอ่าน OTP ใช้สิทธิ์ read และขอบเขตเฉพาะกลุ่มทดสอบ โดยไม่ต้องเพิ่มสิทธิ์ส่งหรือจัดการกล่องจดหมาย_

### 4. จับคู่ที่อยู่อีเมลกับ mailbox ID

เรียกรายการกล่องจดหมายด้วยคีย์ที่สร้างไว้:

```bash
curl --fail-with-body --silent --show-error \
  'https://mailera.app/api/public/v1/mailboxes' \
  -H "Authorization: Bearer $MAILERA_API_KEY"
```

ในรายการ `data` ให้หา `email` ที่ตรงกับ Gmail ทดสอบของคุณ แล้วนำ `id` ของรายการนั้นไปตั้งเป็น `$MAILBOX_ID` อย่าเลือกสมาชิกตัวแรกของรายการโดยไม่ตรวจที่อยู่อีเมล

ตรวจ `group_id` ด้วยว่ากล่องอยู่ในกลุ่มที่ตั้งใจใช้ หากไม่พบกล่อง ให้ตรวจว่าขอบเขตกล่องจดหมายของคีย์ครอบคลุมกลุ่มนั้นหรือไม่ หากต้องสร้างคีย์ใหม่ ให้เลือกเฉพาะกลุ่มทดสอบที่ถูกต้องและสิทธิ์ “Read”

## เรียก API เพื่อเลือก OTP ที่ต้องการอย่างไร?

### 5. เริ่มคำขอใหม่และบันทึกเวลา

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

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

### 6. เรียกปลายทาง OTP พร้อมตัวกรอง

เปลี่ยนผู้ส่งและหัวเรื่องในตัวอย่างให้ตรงกับอีเมลจากแอปทดสอบของคุณ ที่อยู่ `verification@example.invalid` เป็นเพียงค่าตัวอย่าง:

```bash
curl --fail-with-body --silent --show-error --get \
  "https://mailera.app/api/public/v1/mailboxes/$MAILBOX_ID/otp" \
  -H "Authorization: Bearer $MAILERA_API_KEY" \
  --data-urlencode 'from=verification@example.invalid' \
  --data-urlencode 'subject=Test verification run-alpha' \
  --data-urlencode 'since_minutes=5'
```

| พารามิเตอร์ | การใช้งานในคำขอ | ข้อควรตรวจ |
| --- | --- | --- |
| `id` ในเส้นทาง | ระบุกล่องจดหมายเป้าหมาย | ใช้ ID ที่จับคู่กับ `email` แล้ว ไม่ใช่ที่อยู่อีเมลแทน ID |
| `from` | ระบุผู้ส่งที่ต้องการกรอง | ตรวจที่อยู่ผู้ส่งจากข้อความจริง อย่าอาศัยชื่อที่แสดงเพียงอย่างเดียว |
| `subject` | ระบุหัวเรื่องที่ต้องการกรอง | ใช้หัวเรื่องของอีเมลทดสอบ ไม่ใส่ไวยากรณ์ค้นหาของ Gmail ปะปน |
| `since_minutes` | พารามิเตอร์ที่ปลายทางรองรับ | ตัวอย่างส่งค่า `5` |

พารามิเตอร์ `from`, `subject`, `since_minutes` เป็นของ Mailera endpoint นี้โดยเฉพาะ ไม่ใช่ไวยากรณ์ค้นหาของ Gmail จึงไม่ควรใส่คำค้นแบบ Gmail ปะปน หากต้องการรายละเอียดข้อกำหนดของคำขอและผลลัพธ์ ให้ดู[เอกสาร API ของ Mailera](https://mailera.app/th/docs) ก่อนเขียนโค้ดอ่านผลลัพธ์ อย่าสมมติชื่อฟิลด์จาก API ของบริการอื่น

### 7. ตรวจข้อความก่อนนำรหัสไปใช้

ตรวจที่อยู่อีเมลของกล่อง ผู้ส่ง หัวเรื่อง และเวลารับข้อความให้ตรงกับคำขอที่เริ่มไว้ หากต้องดูข้อความประกอบ ให้เรียกรายการข้อความ:

```bash
curl --fail-with-body --silent --show-error --get \
  "https://mailera.app/api/public/v1/mailboxes/$MAILBOX_ID/messages" \
  -H "Authorization: Bearer $MAILERA_API_KEY" \
  --data-urlencode 'folder=inbox' \
  --data-urlencode 'from=verification@example.invalid'
```

ผลรายการข้อความมี `mailbox_id`, `from.address`, `subject`, `received_at` และ `folder` เทียบ `received_at` กับเวลาเริ่มคำขอที่บันทึกไว้ และตรวจข้อมูลอื่นประกอบ แทนการเห็นตัวเลขในข้อความแล้วส่งเข้าแบบฟอร์มทันที หากมีหลายข้อความที่ยังแยกไม่ออกว่าเป็นของคำขอใด ให้หยุดรอบนั้นและเริ่มคำขอที่ระบุได้ชัดเจนกว่า

การอ่านรหัสจากอีเมลไม่ได้ยืนยันว่ารหัสยังใช้ได้ แอปต้นทางเป็นผู้ตรวจสอบอายุรหัสและความสัมพันธ์กับคำขอ

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

## ข้อผิดพลาดที่พบบ่อยเมื่อไม่พบ OTP มีอะไรบ้าง?

เริ่มจากแยกให้ออกว่าไม่มีอีเมลเข้ากล่อง หรือมีอีเมลแล้วแต่การเลือกข้อความไม่ตรง ตรวจรายการข้อความก่อนแก้พารามิเตอร์ในคำขอ

| อาการ | จุดที่ควรตรวจ | วิธีแก้ |
| --- | --- | --- |
| ไม่พบรหัส | แอปส่งอีเมลไปยัง Gmail ทดสอบที่ถูกต้องหรือไม่ | ตรวจผู้รับในฝั่งแอป แล้วตรวจรายการข้อความในกล่องนั้น |
| ได้รหัสจากคำขอเก่า | เวลาเริ่มทดสอบเทียบกับ `received_at` และหัวเรื่อง | อย่าใช้ข้อความที่ไม่ตรงกับรอบปัจจุบัน และใช้ตัวระบุรอบทดสอบในหัวเรื่องเมื่อทำได้ |
| เลือกกล่องผิด | `email` กับ `id` จาก `GET /mailboxes` | จับคู่ใหม่และแก้ `$MAILBOX_ID` อย่าใช้ลำดับรายการเป็นตัวเลือก |
| ตัวกรองแคบเกินไป | ผู้ส่งและหัวเรื่องของอีเมลจริง | ตรวจข้อความก่อนแก้ตัวกรอง อย่าถอดทุกตัวกรองแล้วนำรหัสแรกไปใช้ |
| มีอีเมลแต่ไม่อยู่ในกล่องจดหมายเข้า | โฟลเดอร์สแปมและตำแหน่งข้อความ | เรียก `GET /mailboxes/{id}/placement` พร้อมตัวกรองที่เกี่ยวข้องเพื่อตรวจตำแหน่งอีเมล |
| การเชื่อมต่อหยุดทำงาน | สถานะและการซิงก์ล่าสุด รวมถึงการเปลี่ยนรหัสผ่าน Google | ตรวจข้อมูลการเชื่อมต่อและรหัสผ่านสำหรับแอป |

ปลายทาง `GET /mailboxes/{id}/placement` ใช้ตรวจว่าอีเมลอยู่ในกล่องจดหมายเข้าหรือสแปม และรองรับ `from`, `subject`, `since_minutes` หากต้องย้ายข้อความออกจากสแปม สิทธิ์ `read` อย่างเดียวไม่พอ ต้องใช้คีย์ที่มีสิทธิ์ “Move messages” (scope `move`) เรียก `POST /mailboxes/{id}/unspam` หรือ `POST /mailboxes/{id}/messages/{msgId}/move` แยกต่างหาก

สำหรับ Gmail ค่าใน `GET /mailboxes/{id}/status` อิงการซิงก์ล่าสุด ไม่ใช่การทดลองลงชื่อเข้าใช้ Google ใหม่ทุกครั้งที่เรียก หากต้องการสั่งซิงก์ ใช้ `POST /mailboxes/{id}/sync` ด้วยคีย์ที่มีสิทธิ์ “Sync” (scope `sync`) แยกจากคีย์อ่านตามความจำเป็น การสั่งซิงก์ไม่ใช่การสั่งให้แอปต้นทางส่งอีเมล

หากปัญหาเริ่มหลังเปลี่ยนรหัสผ่านบัญชี Google ให้ตรวจรหัสผ่านสำหรับแอปก่อน Google แจ้งว่าการเปลี่ยนรหัสผ่านบัญชีจะเพิกถอนรหัสผ่านสำหรับแอปของบัญชีนั้น

## เก็บคีย์และรหัสยืนยันอย่างไรให้ปลอดภัย?

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

คำสั่ง `curl` ข้างต้นพิมพ์คำตอบลงเทอร์มินัลโดยตรง จึงควรรันในเครื่องหรือสภาพแวดล้อมที่ไม่มีการบันทึก log อัตโนมัติ เมื่อนำไปใช้ใน CI ให้ส่งผลลัพธ์เข้าตัวประมวลผลโดยไม่พิมพ์คีย์ OTP หรือเนื้อหาอีเมลลง log ปิดบังข้อมูลเหล่านี้ในภาพหน้าจอและรายงานข้อผิดพลาดด้วย

ถ้าส่งเนื้อหาอีเมลต่อให้ AI agent ให้ถือว่าอีเมลเป็นข้อมูลที่ไม่น่าเชื่อถือ ไม่ใช่คำสั่ง เอเจนต์ต้องไม่ทำตามข้อความที่สั่งให้เปิดเผยคีย์ เปลี่ยนปลายทาง หรือส่งข้อมูลออกไป ใช้คีย์สิทธิ์ต่ำสุด และหากมีงานส่งอีเมล ให้ผู้ใช้ยืนยันก่อนส่ง อ่านข้อมูลผลิตภัณฑ์เพิ่มเติมที่[หน้าความปลอดภัยของ Mailera](https://mailera.app/th/security)

## ขอบเขตที่ Mailera ไม่ได้จัดการให้

Mailera ไม่สร้างที่อยู่ Gmail หรือกล่องจดหมายใหม่ คุณต้องมีสิทธิ์เข้าถึงกล่องที่นำมาเชื่อมต่ออยู่แล้ว และการใช้รหัสผ่านสำหรับแอปขึ้นกับเงื่อนไขบัญชี Google รวมถึงนโยบายผู้ดูแลขององค์กร

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

**ทำสิ่งนี้ด้วย API** — ทุกการดำเนินการในบทความนี้ทำได้ผ่าน REST API พร้อมตัวอย่าง curl, API key และ webhook [ดูเอกสาร API](https://mailera.app/th/docs)
