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

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

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

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

ลำดับจากแอปขอรหัส อีเมลเข้ากล่อง Yahoo หรือ iCloud ซิงก์เข้า Mailera แล้วสคริปต์อ่านและส่งรหัสให้แอปตรวจ
แอปของคุณส่งรหัส ส่วน API อ่านรหัสจากอีเมลที่ซิงก์เข้ามา

รหัสที่ปรากฏบนอุปกรณ์ Apple เป็นคนละช่องทางกับอีเมล เอกสาร Apple เรื่องการรับรหัสยืนยัน ระบุการแสดงรหัสบนอุปกรณ์ที่เชื่อถือได้ การรับข้อความ และการรับสายโทรศัพท์ API อ่านอีเมลนี้ไม่ได้อ่านรหัสจากช่องทางเหล่านั้น รวมถึงรหัสจากแอปยืนยันตัวตน

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

เตรียมกล่องอีเมลที่ใช้งานได้อยู่แล้ว และบัญชี Mailera ที่มีบทบาท Admin หรือ Leader สำหรับเพิ่มกล่องจดหมาย Mailera เชื่อมต่อกล่องจดหมายที่คุณมีอยู่ ไม่ได้สร้างกล่องหรือที่อยู่อีเมลใหม่

รหัสผ่านสำหรับแอป (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 และเอกสาร app-specific password ของ Apple สำหรับ iCloud นั้น เอกสารตั้งค่าเซิร์ฟเวอร์อีเมลของ Apple ก็ระบุให้ใช้รหัสผ่านเฉพาะแอปสำหรับเซิร์ฟเวอร์ขาเข้า

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

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

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

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

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

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

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

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

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

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

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

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

พารามิเตอร์ค่าในตัวอย่างสิ่งที่ยังต้องตรวจในงานทดสอบ
fromotp@example.testตรวจ from.address ในรายการข้อความให้ตรงกับผู้ส่งของแอป
subjectTest verificationเลือกหัวเรื่องของอีเมลยืนยัน ไม่ใช่อีเมลต้อนรับหรือแจ้งเตือนอื่น
since_minutes5เทียบ 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:

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 แยกต่างหาก:

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 ของข้อความนั้นเพื่ออ่านเนื้อหา:

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

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

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

ทำสิ่งนี้ด้วย API

ทุกการดำเนินการในบทความนี้ทำได้ผ่าน REST API พร้อมตัวอย่าง curl, API key และ webhook

ดูเอกสาร API