---
title: "ดึง OTP จากอีเมล Yahoo และ iCloud ผ่าน API"
description: "วิธีเชื่อม Yahoo และ iCloud ด้วยรหัสผ่านสำหรับแอป แล้วดึง OTP ผ่าน API จากกล่องทดสอบของคุณ พร้อมตรวจสิทธิ์ ตัวกรอง และอีเมลขยะ"
url: https://mailera.app/th/blog/yahoo-icloud-email-otp
published: 2026-10-25
updated: 2026-10-25
---

# ดึง OTP จากอีเมล Yahoo และ iCloud ผ่าน API

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

## อ่าน OTP จาก Yahoo และ iCloud ผ่าน API ได้อย่างไร?

เชื่อมต่อกล่องจดหมายก่อน แล้วใช้ API เดียวกันอ่านรหัสจากทั้ง Yahoo และ iCloud จุดที่ต่างกันคือวิธีสร้างรหัสผ่านสำหรับแอปของผู้ให้บริการ ส่วนคำขออ่าน OTP เปลี่ยนเพียง `id` ของกล่องจดหมายและตัวกรองให้ตรงกับอีเมลทดสอบ

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

แยกการขอรหัสออกจากการอ่านรหัสให้ชัด: แอปของคุณเป็นผู้ส่งอีเมลยืนยัน ส่วน Mailera อ่านข้อความจากกล่องที่เชื่อมต่อไว้ การเรียก endpoint อ่าน OTP ไม่ใช่การสั่งให้แอปส่งรหัสใหม่

![ลำดับจากแอปขอรหัส อีเมลเข้ากล่อง Yahoo หรือ iCloud ซิงก์เข้า Mailera แล้วสคริปต์อ่านและส่งรหัสให้แอปตรวจ](https://mailera.app/media/ddb607333e1973ba/otp-yahoo-icloud-api-otp-flow-th-1200.jpg)
_แอปของคุณส่งรหัส ส่วน API อ่านรหัสจากอีเมลที่ซิงก์เข้ามา_

รหัสที่ปรากฏบนอุปกรณ์ Apple เป็นคนละช่องทางกับอีเมล เอกสาร [Apple เรื่องการรับรหัสยืนยัน](https://support.apple.com/en-us/102606) ระบุการแสดงรหัสบนอุปกรณ์ที่เชื่อถือได้ การรับข้อความ และการรับสายโทรศัพท์ API อ่านอีเมลนี้ไม่ได้อ่านรหัสจากช่องทางเหล่านั้น รวมถึงรหัสจากแอปยืนยันตัวตน

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

เตรียมกล่องอีเมลที่ใช้งานได้อยู่แล้ว และบัญชี Mailera ที่มีบทบาท Admin หรือ Leader สำหรับเพิ่มกล่องจดหมาย [Mailera เชื่อมต่อกล่องจดหมายที่คุณมีอยู่](https://mailera.app/th/product) ไม่ได้สร้างกล่องหรือที่อยู่อีเมลใหม่

รหัสผ่านสำหรับแอป (app password) ใช้ให้ Mailera เชื่อมต่อกับผู้ให้บริการอีเมล ส่วนคีย์ API ใช้ให้สคริปต์ของคุณเรียก Mailera ทั้งสองอย่างใช้แทนกันไม่ได้ และไม่ควรนำรหัสผ่านบัญชีหลักมาใส่ในช่องรหัสผ่านสำหรับการเชื่อมต่อนี้

ชื่อเมนูของผู้ให้บริการด้านล่างใช้ตามเอกสารภาษาอังกฤษที่อ่านเมื่อวันที่ 25 ตุลาคม 2026

| ผู้ให้บริการ | วิธีสร้างรหัสผ่านสำหรับแอป | เงื่อนไขและจุดที่ควรตรวจ |
| --- | --- | --- |
| Yahoo | เปิดหน้า Yahoo Account Security ไปที่ “External connections” → “Create app password” ใส่ชื่อแอป แล้วเลือก “Generate password” | Yahoo แนะนำให้ใช้เบราว์เซอร์ที่เคยลงชื่อเข้าใช้ต่อเนื่องหลายวัน และไม่ใช้โหมด Incognito ฝ่ายบริการลูกค้าไม่สามารถเปลี่ยนผลการพิจารณาสิทธิ์สร้างรหัสผ่านนี้ได้ |
| iCloud | ลงชื่อเข้าใช้ Apple Account ที่ `account.apple.com` ไปที่ “Sign-In and Security” → “App-Specific Passwords” → “Generate an app-specific password” แล้วทำตามหน้าจอ | Apple Account ต้องเปิดการยืนยันตัวตนสองปัจจัยก่อนสร้างและใช้รหัสผ่านเฉพาะแอป |

ดูรายละเอียดใน[เอกสารสร้างและจัดการ app password ของ Yahoo](https://help.yahoo.com/kb/SLN15241.html) และ[เอกสาร app-specific password ของ Apple](https://support.apple.com/en-us/102654) สำหรับ iCloud นั้น [เอกสารตั้งค่าเซิร์ฟเวอร์อีเมลของ Apple](https://support.apple.com/en-us/102525) ก็ระบุให้ใช้รหัสผ่านเฉพาะแอปสำหรับเซิร์ฟเวอร์ขาเข้า

การเปลี่ยนรหัสผ่านบัญชีหลักของ Yahoo ไม่ได้ยกเลิก app password ต้องลบรหัสผ่านสำหรับแอปนั้นเอง แต่การเปลี่ยนหรือรีเซ็ตรหัสผ่านหลักของ Apple Account จะเพิกถอน app-specific password ทั้งหมดโดยอัตโนมัติ

รายละเอียดการเชื่อมต่อแยกตามผู้ให้บริการอยู่ที่หน้า [Yahoo Mail](https://mailera.app/th/providers/yahoo) และ [iCloud Mail](https://mailera.app/th/providers/icloud) หากต้องจัดการรหัสผ่านสำหรับหลายกล่องทดสอบ อ่าน[แนวทางใช้รหัสผ่านสำหรับแอปกับกล่องจดหมายของเอเจนต์](https://mailera.app/th/blog/email-app-passwords) เพิ่มเติม

## เชื่อมต่อกล่องอีเมลและเตรียมสิทธิ์อ่านอย่างไร?

1. เปิด **กล่องจดหมาย** → **เพิ่มกล่องจดหมาย** แล้วเลือกแท็บ **กล่องจดหมายเดียว** กรอก **ที่อยู่อีเมล** ของกล่องทดสอบ ตรวจว่าระบบเลือก Yahoo หรือ iCloud ถูกต้อง หากไม่ตรง ให้เลือกจาก **หรือเลือกผู้ให้บริการ** แล้วกด **ดำเนินการต่อ**
2. หน้าถัดไปจะแสดง **วิธีรับรหัสผ่านสำหรับแอป** และ **สิ่งที่ต้องเตรียม** ตามผู้ให้บริการที่เลือก จากนั้นใน **รายละเอียดการเชื่อมต่อ** ใส่รหัสผ่านสำหรับแอปในช่อง **รหัสผ่าน** และเลือก **กลุ่มกล่องจดหมาย** ที่ใช้ทดสอบ แนะนำให้แยกกลุ่มนี้จากกล่องที่ใช้ทำงานจริง เพื่อจำกัดขอบเขตคีย์ในขั้นถัดไป
3. กด **ทดสอบและเชื่อมต่อ** การทดสอบนี้ไม่ส่งอีเมล ตรวจผลตามลำดับ: **เซิร์ฟเวอร์เชื่อมต่อ** (แสดงเมื่อจำเป็น), **ลงชื่อเข้าใช้เซิร์ฟเวอร์ขาเข้า**, **ตรวจหาโฟลเดอร์**, **ลงชื่อเข้าใช้เซิร์ฟเวอร์ขาออก** และ **ติดตามแบบเรียลไทม์** หากรับได้แต่ขั้นตอนส่งล้มเหลว คุณสามารถเลือก **บันทึกแบบรับอย่างเดียว** สำหรับงานอ่าน OTP ได้
4. เมื่อเชื่อมต่อสำเร็จ Mailera จะโหลดข้อความภายในระยะเวลาเก็บรักษา โดยเริ่มจากข้อความใหม่สุด หลังสร้างคีย์ในขั้นถัดไป ให้ตรวจ `status` และ `last_sync_at` ในผลตอบกลับของ `GET /mailboxes` ตามตัวอย่างด้านล่าง อย่าใช้เพียงการเห็นชื่อกล่องในรายการเป็นเกณฑ์ว่าข้อความทดสอบเข้ามาแล้ว
5. ไปที่ **การตั้งค่า** เปิดแท็บ API key แล้วเลือก **สร้าง API key** ตั้ง **ชื่อที่สื่อความหมาย** จำกัด **ขอบเขตกล่องจดหมาย** เป็นกลุ่มทดสอบ และให้สิทธิ์ `read` ตั้ง **ระยะเวลาที่ใช้ได้** ให้เหมาะกับงาน คีย์จะแสดงเพียงครั้งเดียว ให้เก็บในระบบจัดการข้อมูลลับของคุณ

![หน้ารายละเอียดการเชื่อมต่อกล่องทดสอบ พร้อมช่องรหัสผ่านสำหรับแอปและปุ่มทดสอบและเชื่อมต่อ](https://mailera.app/media/96b7724b189bc376/fastmail-ai-mailera-add-fastmail-th-1200.jpg)
_ช่องรหัสผ่านนี้ใช้รหัสผ่านสำหรับแอป ไม่ใช่รหัสผ่านบัญชีหลักหรือคีย์ API_

Admin เลือกขอบเขตทุกกลุ่มได้ แต่สคริปต์อ่าน OTP ของกล่องทดสอบไม่จำเป็นต้องเข้าถึงทุกกลุ่ม และไม่ต้องมีสิทธิ์ `send` หรือ `manage` เลย

จากนั้นโหลดคีย์เข้าสู่ตัวแปรสภาพแวดล้อม `MAILERA_API_KEY` ในเครื่องทดสอบ แล้วเรียกรายการกล่องจดหมาย:

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

เลือกสมาชิกใน `data` โดยตรวจ `email`, `provider` และ `group_id` แล้วนำ `id` ของกล่องที่ตรงกันไปตั้งเป็น `MAILBOX_ID` อย่าเลือกสมาชิกตัวแรกของรายการเพียงเพราะมีข้อมูลอยู่แล้ว หากผลลัพธ์ยังไม่ครบทุกรายการ ให้ใช้ `limit` และ `offset` เพื่ออ่านหน้าถัดไป

ตรวจ `status` และ `last_sync_at` ของกล่องนั้นด้วย ก่อนเริ่มส่งอีเมลทดสอบจริง คุณสามารถดูรายการ endpoint และสิทธิ์แต่ละรายการใน[เอกสาร API ของ Mailera](https://mailera.app/th/docs)

## เรียก API เพื่ออ่าน OTP ของการทดสอบนี้อย่างไร?

ให้สคริปต์ทดสอบทำงานตามลำดับนี้:

1. เลือกกล่องทดสอบและบันทึกเวลาเริ่มรอบทดสอบ
2. ขอรหัสจากแอปของคุณ โดยให้ส่งไปยังกล่องที่เลือกไว้
3. อ่าน OTP จาก `MAILBOX_ID` เดียวกัน พร้อมตัวกรองที่ตรงกับข้อความของแอป
4. ตรวจความสัมพันธ์กับรอบทดสอบก่อนนำรหัสไปใช้ แล้วให้แอปปลายทางตรวจความถูกต้องของรหัส

ตัวอย่างต่อไปนี้ใช้ที่อยู่ผู้ส่งสมมติ `otp@example.test` และหัวเรื่อง `Test verification` เปลี่ยนทั้งสองค่าให้ตรงกับอีเมลที่แอปทดสอบของคุณส่ง ส่วนพารามิเตอร์ `since_minutes` ใช้ค่า `5` ในตัวอย่างนี้

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

ใช้คำขอนี้ได้กับทั้ง Yahoo และ iCloud โดยเปลี่ยน `MAILBOX_ID` ให้ตรงกับกล่องที่ต้องการอ่าน endpoint นี้ต้องมีสิทธิ์ `read`

| พารามิเตอร์ | ค่าในตัวอย่าง | สิ่งที่ยังต้องตรวจในงานทดสอบ |
| --- | --- | --- |
| `from` | `otp@example.test` | ตรวจ `from.address` ในรายการข้อความให้ตรงกับผู้ส่งของแอป |
| `subject` | `Test verification` | เลือกหัวเรื่องของอีเมลยืนยัน ไม่ใช่อีเมลต้อนรับหรือแจ้งเตือนอื่น |
| `since_minutes` | `5` | เทียบ `received_at` ของข้อความกับเวลาเริ่มรอบทดสอบ แล้วให้แอปปลายทางตรวจรหัสและวันเวลาหมดอายุ |

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

รหัสล่าสุดไม่เท่ากับรหัสของรอบปัจจุบันเสมอไป ตรวจ `received_at` จากรายการข้อความเทียบกับเวลาเริ่มรอบทดสอบ พร้อมตรวจ `subject` และ `from.address` ให้ตรงกับอีเมลที่คาดไว้ อย่ายอมรับรหัสเพียงเพราะ API ส่งค่ากลับมา แอปของคุณยังต้องเป็นผู้ตัดสินว่ารหัสถูกต้องและยังใช้ได้

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

Mailera มีโหมดพักสำหรับกล่องจดหมาย โดยผล `GET /mailboxes` มีฟิลด์ `sync.sleeping_since` หากต้องการขอซิงก์และปลุกกล่องที่อยู่ในโหมดพัก ให้เรียก `POST /mailboxes/{id}/sync` ด้วยคีย์ที่มีสิทธิ์ `sync` แล้วตรวจ `last_sync_at` ก่อนอ่าน OTP อีกครั้ง

## ข้อผิดพลาดที่พบบ่อย: ทำไมยังอ่านรหัสไม่ได้?

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

| อาการ | จุดตรวจ | ขั้นตอนถัดไป |
| --- | --- | --- |
| เชื่อมต่อกล่องไม่ได้ | ช่องรหัสผ่านใช้ app password หรือรหัสผ่านบัญชีหลัก | ใช้รหัสผ่านสำหรับแอป และตรวจว่ารหัสนั้นถูกลบหรือเพิกถอนแล้วหรือไม่ |
| Yahoo สร้าง app password ไม่ได้ | เบราว์เซอร์ที่ใช้และสิทธิ์สร้างรหัสของบัญชี | ทำตามคำแนะนำของ Yahoo เรื่องเบราว์เซอร์ที่เคยใช้งานและไม่ใช้ Incognito |
| iCloud เคยเชื่อมต่อได้แล้วหยุดทำงาน | มีการเปลี่ยนหรือรีเซ็ตรหัสผ่าน Apple Account หรือไม่ | หากมี ให้สร้าง app-specific password ใหม่แล้วเชื่อมต่ออีกครั้ง |
| เรียก API แล้วอ่านกล่องที่ต้องการไม่ได้ | `MAILBOX_ID`, กลุ่มที่คีย์เข้าถึงได้ และสิทธิ์ `read` | ตรวจเทียบกับผล `GET /mailboxes` และขอบเขตของคีย์ |
| เห็นอีเมลใน Yahoo หรือ iCloud แต่ยังอ่านไม่พบ | `last_sync_at` และค่าพารามิเตอร์ในคำขอ | ตรวจ `status` ในผล `GET /mailboxes` แล้วตรวจพารามิเตอร์ทีละค่า |
| ไม่พบข้อความในกล่องจดหมายเข้า | ตำแหน่งข้อความและโฟลเดอร์อีเมลขยะ | ตรวจ placement และรายการข้อความใน `junk` |
| พบข้อความแล้ว แต่ยังอ่าน OTP ไม่ได้ | เนื้อหาข้อความและรูปแบบอีเมลของแอป | เปิดอ่านข้อความนั้นผ่าน API แล้วตรวจรูปแบบรหัส โดยปิดบังข้อมูลลับ |

สำหรับ Yahoo และ iCloud ผลจาก `GET /mailboxes/{id}/status` อ้างอิงการซิงก์ล่าสุด ไม่ใช่การทดสอบลงชื่อเข้าใช้โดยตรงทุกครั้งแบบที่ทำกับ Microsoft หากต้องการบังคับให้ซิงก์ทันที ใช้ `POST /mailboxes/{id}/sync` ซึ่งต้องมีสิทธิ์ `sync` เพิ่มจาก `read` และคำขอนี้ยังปลุกกล่องที่อยู่ในโหมดพักได้ด้วย

ตรวจว่าข้อความไปอยู่ในกล่องจดหมายเข้าหรืออีเมลขยะได้ด้วยตัวกรองเดียวกับที่ใช้หา OTP:

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

ถ้าต้องตรวจโฟลเดอร์อีเมลขยะโดยตรง ให้เรียกรายการข้อความโดยระบุ `folder=junk` แยกต่างหาก:

```bash
curl --silent --show-error --get \
  "https://mailera.app/api/public/v1/mailboxes/$MAILBOX_ID/messages" \
  -H "Authorization: Bearer $MAILERA_API_KEY" \
  --data-urlencode 'folder=junk' \
  --data-urlencode 'from=otp@example.test'
```

จากรายการข้อความ ตรวจ `id`, `subject`, `received_at` และ `from.address` เลือกข้อความของรอบทดสอบ แล้วตั้ง `MESSAGE_ID` เป็น `id` ของข้อความนั้นเพื่ออ่านเนื้อหา:

```bash
curl --silent --show-error \
  "https://mailera.app/api/public/v1/mailboxes/$MAILBOX_ID/messages/$MESSAGE_ID" \
  -H "Authorization: Bearer $MAILERA_API_KEY"
```

เนื้อหาอยู่ใน `data.body.text` และ `data.body.html` ใช้ตรวจว่าอีเมลมีรหัสตามที่แอปตั้งใจส่งหรือไม่ และทดสอบการแยกรหัสกับรูปแบบอีเมลที่แอปของคุณใช้งานจริง ปิดการบันทึกผลตอบกลับดิบก่อนตรวจ เพราะเนื้อหาอาจมี OTP และข้อมูลส่วนตัว

## ต้องเก็บรหัสและข้อมูลลับอย่างไรให้ปลอดภัย?

อย่าบันทึก OTP รหัสผ่านสำหรับแอป หรือคีย์ API ลง log ผลทดสอบ ภาพหน้าจอ หรือไฟล์ที่นำเข้า repository สำหรับผลทดสอบทั่วไป ให้เก็บเพียงผลผ่านหรือไม่ผ่านและจุดที่ล้มเหลว แทนการแนบรหัสหรือเนื้อหาอีเมลทั้งฉบับ

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

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

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

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