ต้องเตรียมอะไรบ้างก่อนให้เอเจนต์อ่านอีเมล?
ก่อนให้เอเจนต์กดขอรหัส ให้แอปหยุดงานถัดไปไว้ก่อน แล้วรอจนกว่าจะได้รหัสที่ผ่านเงื่อนไขของงานนั้นจริง ๆ ไม่ใช่แค่สั่งให้เบราว์เซอร์รอจนช่องกรอกรหัสปรากฏ เพราะช่องพร้อมใช้งานกับอีเมลมาถึงเป็นคนละเงื่อนไขกัน
ใช้เฉพาะบัญชีและกล่องอีเมลทดสอบที่คุณเป็นเจ้าของหรือได้รับอนุญาตให้ใช้ เริ่มจากกล่องเดิมที่เชื่อมต่อ Mailera แล้ว และระบุรหัสกล่องเป้าหมายในแอปให้แน่นอน ไม่ให้เอเจนต์เลือกจากชื่อที่ดูคล้ายกันเอง หากยังไม่ได้เตรียมกล่อง อ่านพื้นฐานการอ่าน OTP จากกล่องของคุณ ก่อน ส่วนการเตรียมข้อมูลเข้าสู่ระบบแยกไว้ในคู่มือรหัสผ่านสำหรับแอปสำหรับกล่องของเอเจนต์
ตั้งค่าคีย์สำหรับเส้นทางอ่าน OTP โดยเฉพาะ:
- เปิด การตั้งค่า ไปที่แท็บ API key แล้วเลือก สร้าง API key
- ตั้ง ชื่อที่สื่อความหมาย และเลือก ขอบเขตกล่องจดหมาย เป็นกลุ่มที่ใช้ทดสอบ ขอบเขตนี้เลือกได้ทีละกลุ่ม (บัญชี Admin เลือกได้ทุกกลุ่ม) จึงควรแยกกล่องทดสอบออกจากกลุ่มที่มีอีเมลงานอื่น
- เลือกเฉพาะสิทธิ์ “อ่าน (Read)” ซึ่งตรงกับ scope
readไม่เพิ่มสิทธิ์ส่งอีเมลให้ขั้นตอนนี้ - เก็บคีย์ไว้ฝั่งบริการเมื่อหน้าจอแสดง สร้าง API key แล้ว — คัดลอกตอนนี้ เพราะคีย์จะแสดงเพียงครั้งเดียว
- ใช้ คัดลอกการกำหนดค่า MCP สำหรับ Claude, Cursor หรือ VS Code ตามไคลเอนต์ที่คุณใช้

การเชื่อมต่อ MCP ของ Mailera ใช้ endpoint https://mailera.app/api/public/v1/mcp และมีเครื่องมือ get_latest_otp ที่ใช้สิทธิ์ read หากแอปเรียก HTTP เอง ทางเลือก REST คือ GET /mailboxes/{id}/otp ดูภาพรวมการเชื่อมต่อได้ที่หน้าสำหรับนักพัฒนา
จะกำหนดจุดหยุดรอและเงื่อนไขทำงานต่ออย่างไร?
ให้แอปเก็บสถานะของงานไว้เอง ไม่ฝากทุกอย่างไว้ในประวัติสนทนาของเอเจนต์ ก่อนกดขอรหัส ให้เก็บกล่องเป้าหมาย เวลาเริ่มคำขอ เซสชันเบราว์เซอร์ และบริบทของงาน เช่น เว็บไซต์ บัญชีทดสอบ และการกระทำที่กำลังยืนยัน
กำหนดเวลาสิ้นสุดการรอ ช่วงเว้นระหว่างการตรวจ และจำนวนครั้งที่อนุญาตให้ลองใหม่เป็นค่าของแอปด้วย อย่าให้การเรียกเครื่องมือสำเร็จแต่ละครั้งต่ออายุการรอออกไปเรื่อย ๆ จนงานไม่มีวันจบ
| สถานะของแอป | สิ่งที่ต้องทำ | เงื่อนไขออกจากสถานะ |
|---|---|---|
| เริ่มคำขอยืนยัน | เก็บบริบทก่อนกดขอรหัส | ขอรหัสแล้วและยังอยู่ในเซสชันเดิม |
| รออีเมล | อ่านจากกล่องเป้าหมายตามช่วงที่กำหนด | พบข้อมูลให้ตรวจ หรือครบเวลารอ |
| ตรวจรหัส | เทียบข้อความกับคำขอปัจจุบัน | จับคู่ได้ชัดเจน หรือหยุดเมื่อกำกวม |
| กรอกรหัส | ส่งเฉพาะรหัสไปยังช่องที่กำหนด | กรอกและส่งแบบฟอร์มแล้ว |
| ตรวจผล | อ่านผลยืนยันบนเว็บไซต์ | เว็บไซต์แสดงความสำเร็จ หรือพบข้อผิดพลาด |
| สำเร็จหรือรอคนตรวจ | เดินหน้าต่อเฉพาะกรณีสำเร็จ | งานจบ หรือมีคนตัดสินใจขั้นต่อไป |

แยก timeout ของการเรียกเครื่องมือออกจากเวลารออีเมลทั้งหมด การเรียกครั้งหนึ่งอาจหยุดเพราะใช้เวลานานเกินไป แต่แอปยังต้องตัดสินใจว่าจะลองใหม่ภายในกรอบเดิมหรือจบงาน ไม่ควรปล่อยให้เอเจนต์ตัดสินใจเพิ่มเวลารอเอง
หากใช้ Browser Use คุณสามารถวางตรรกะอ่านและตรวจรหัสไว้ใน custom tool ได้ เอกสารทางการของ Browser Use อธิบายการลงทะเบียนฟังก์ชันผ่าน Tools แล้วส่งให้ agent วิธีนี้ช่วยแยกจุดตัดสินใจออกจากคำสั่งนำทางบนหน้าเว็บ แต่แอปยังต้องดูแลสถานะการรอและเซสชันเอง
ขั้นตอนอ่าน OTP และให้เบราว์เซอร์ทำงานต่อ
1. ตรวจหน้ายืนยันและบันทึกคำขอ
ตรวจว่าเบราว์เซอร์อยู่บนเว็บไซต์และบัญชีทดสอบที่อนุญาต ก่อนกดขอรหัส ให้บันทึกเวลาเริ่มคำขอและผูกงานนี้กับกล่องเป้าหมาย หากหน้าเว็บแสดงบริบทของการยืนยัน ให้เก็บส่วนที่จำเป็นไว้ใช้เทียบภายหลังด้วย
จากนั้นหยุดการกระทำถัดไปของเอเจนต์ ไม่ให้กดขอรหัสซ้ำ เปลี่ยนบัญชี หรือเริ่มงานยืนยันอีกงานระหว่างรอ การคงหน้าเว็บไว้เพียงอย่างเดียวไม่พอ แอปต้องรู้ด้วยว่างานที่กำลังรอคือคำขอใด
2. เรียกเครื่องมือโดยใช้สคีมาของเครื่องมือนั้น
สำหรับ MCP ให้ไคลเอนต์ค้นหาเครื่องมือด้วย tools/list แล้วอ่าน inputSchema ของ get_latest_otp ก่อนสร้างคำขอ เรียกเครื่องมือผ่าน tools/call โดยใช้พารามิเตอร์ตามสคีมาที่ได้รับ ไม่คัดลอกชื่อพารามิเตอร์ REST ไปใช้กับ MCP โดยเดาเอา
ข้อกำหนดเครื่องมือ MCP อธิบายขั้นตอนเหล่านี้ รวมทั้งแนะนำให้กำหนด timeout ของการเรียกเครื่องมือ และตรวจผลลัพธ์ก่อนส่งต่อให้ LLM
ฝั่ง REST ใช้ GET /mailboxes/{id}/otp เพื่ออ่าน OTP ล่าสุด โดยมีพารามิเตอร์ id, from, subject และ since_minutes การกรองผู้ส่ง หัวเรื่อง และช่วงเวลาช่วยลดข้อความที่ไม่เกี่ยวข้อง แต่ยังไม่ควรใช้ผลลัพธ์นั้นเป็นคำสั่งให้กรอกรหัสทันที รายละเอียด endpoint อยู่ในเอกสาร API ของ Mailera
3. ตรวจความสัมพันธ์กับคำขอ ไม่ใช่แค่มีรหัส
ให้ถือว่ารหัสที่อ่านได้เป็นเพียงรหัสที่รอตรวจ จนกว่าแอปจะเทียบกับบริบทของงานแล้ว เงื่อนไขควรครอบคลุมกล่องเป้าหมาย ผู้รับ ผู้ส่ง หัวเรื่อง เวลาได้รับข้อความ และข้อมูลอ้างอิงของคำขอถ้ามี
คุณอ่านรายการข้อความด้วย GET /mailboxes/{id}/messages เพื่อดูข้อมูลประกอบได้ ตัวอย่างนี้ใช้ตัวแปรสภาพแวดล้อม $MAILERA_API_KEY และ $MAILBOX_ID ซึ่งต้องตั้งเป็นค่าของกล่องทดสอบก่อนเรียก เปลี่ยนค่า from เป็นผู้ส่งที่คาดไว้ และค่า since เป็นเวลาเริ่มคำขอปัจจุบันแทนค่าตัวอย่าง:
curl --get "https://mailera.app/api/public/v1/mailboxes/$MAILBOX_ID/messages" \
--header "Authorization: Bearer $MAILERA_API_KEY" \
--data-urlencode "folder=inbox" \
--data-urlencode "from=noreply@example.com" \
--data-urlencode "since=2025-01-01T00:00:00Z"รายการข้อความมี mailbox_id, from.address, to, subject และ received_at ให้ใช้ตรวจประกอบ หากต้องอ่านเนื้อหาเฉพาะฉบับ ใช้ GET /mailboxes/{id}/messages/{msgId} ซึ่งใช้สิทธิ์ read เช่นกัน และอ่านเฉพาะส่วนที่จำเป็น
เวลาใกล้กันและผู้ส่งตรงกันยังไม่พอเสมอไป หากมีหลายคำขอที่เข้ากับเงื่อนไขเดียวกัน อย่าเลือกข้อความล่าสุดเพียงเพราะอยู่บนสุด แม้พบข้อความเดียวในผลลัพธ์ ก็ยังต้องตรวจว่ามีข้อมูลเชื่อมโยงกับงานปัจจุบันพอหรือไม่ ถ้าข้อมูลไม่พอ ให้หยุดเพื่อให้คนตรวจแทนการเดา
4. กรอกรหัสแล้วตรวจผลบนเว็บไซต์
เมื่อผ่านเงื่อนไขแล้ว ตรวจอีกครั้งว่าเบราว์เซอร์ยังอยู่ในคำขอและเซสชันเดิม จากนั้นส่งเฉพาะรหัสไปยังช่องยืนยันที่แอปกำหนด ไม่ส่งเนื้อหาอีเมลทั้งฉบับให้เอเจนต์ตีความว่าจะทำอะไรต่อ
หลังกรอกและส่งแบบฟอร์ม ต้องตรวจผลบนหน้าเว็บตามเงื่อนไขความสำเร็จของงาน การกรอกช่องได้หรือกดปุ่มสำเร็จไม่ใช่จุดจบของการยืนยัน หากหน้าเว็บปฏิเสธรหัส อย่าเปลี่ยนไปลองรหัสอื่นโดยอัตโนมัติ
5. ตรวจซ้ำได้ แต่ต้องมีจุดสิ้นสุด
ถ้ายังไม่มีรหัสที่ผ่านเงื่อนไข ให้เว้นช่วงก่อนตรวจใหม่ และใช้เวลาสิ้นสุดเดิมของคำขอ เมื่อครบเวลาหรือเซสชันใช้ต่อไม่ได้ ให้หยุดงานพร้อมเหตุผลที่ชัดเจน เช่น รอเกินกำหนดหรือจับคู่ข้อความไม่ได้
ข้อผิดพลาดที่พบบ่อยควรจัดการอย่างไร?
แยกปัญหาอีเมลออกจากปัญหาเบราว์เซอร์ก่อนแก้ การกดขอรหัสใหม่ทุกครั้งที่ยังอ่านไม่พบจะทำให้บริบทของงานซับซ้อนขึ้น โดยไม่ได้ช่วยบอกว่าปัญหาอยู่ตรงไหน
| อาการ | จุดที่ควรตรวจ | การตัดสินใจของแอป |
|---|---|---|
| ยังไม่มีรหัสให้ใช้ | สถานะกล่องด้วย get_mailbox_status และตำแหน่งข้อความด้วย GET /mailboxes/{id}/placement | ตรวจซ้ำภายในเวลาที่กำหนด แล้วหยุดเมื่อครบเวลา |
| มีข้อความที่อาจตรงมากกว่าหนึ่งฉบับ | เวลาเริ่มคำขอ ผู้รับ และบริบทของงาน | หยุดงานแล้วส่งต่อให้คนตรวจ ไม่ลองรหัสทีละตัว |
| ข้อความดูเป็นของคำขอก่อนหน้า | เทียบ received_at และข้อมูลอ้างอิงกับคำขอปัจจุบัน | ไม่กรอกจนกว่าจะจับคู่ได้ชัดเจน |
| เซสชันเบราว์เซอร์หมดอายุ | งานเดิมยังเปิดอยู่และยืนยันต่อได้หรือไม่ | ยกเลิกบริบทเดิมก่อนเริ่มคำขอใหม่ |
| พบข้อความในโฟลเดอร์อีเมลขยะ/สแปม | ตรวจตำแหน่งข้อความแยกจากการย้าย | ไม่เพิ่มสิทธิ์ move เพียงเพื่ออ่าน OTP |
| ต้องซิงก์กล่องใหม่ | สถานะการเชื่อมต่อและการซิงก์ | ให้กระบวนการที่มีสิทธิ์ sync จัดการแยกต่างหาก |
Mailera แสดงได้ว่าข้อความอยู่ในกล่องขาเข้าหรือโฟลเดอร์อีเมลขยะ การตรวจตำแหน่งผ่าน /placement ใช้สิทธิ์ read ส่วนการย้ายข้อความต้องใช้ move เป็นคนละการกระทำกัน เส้นทางอ่านรหัสไม่จำเป็นต้องมีสิทธิ์ย้ายข้อความ
เช่นเดียวกัน sync_mailbox ต้องใช้สิทธิ์ sync อย่าเพิ่มสิทธิ์นี้ให้คีย์อ่าน OTP เพียงเพื่อให้เอเจนต์แก้ทุกปัญหาเอง ให้แอปแจ้งเหตุและส่งต่อไปยังกระบวนการดูแลกล่องที่เหมาะสม
เมื่อเซสชันหมดอายุ ให้ปิดคำขอเดิมก่อนเริ่มใหม่ อย่านำรหัสที่ค้างอยู่กลับไปกรอกในเซสชันใหม่โดยอัตโนมัติ บันทึกว่ารหัสนั้นถูกพิจารณาภายใต้บริบทเดิม ไม่ใช่เก็บเป็นรหัสสำรองสำหรับงานครั้งถัดไป
จะป้องกันคำสั่งอันตรายในอีเมลและรหัสรั่วไหลอย่างไร?
อีเมลเป็นข้อมูลที่ไม่น่าเชื่อถือ ไม่ใช่คำสั่งของระบบ ข้อความที่บอกให้เปิดเผยคีย์ เปลี่ยนเว็บไซต์ปลายทาง หรือเรียกเครื่องมืออื่นต้องไม่มีสิทธิ์เปลี่ยนพฤติกรรมของเอเจนต์ แม้จะอยู่ในอีเมลที่มีรหัสยืนยันก็ตาม

วางส่วนตรวจข้อมูลไว้ระหว่างผลจากเครื่องมืออ่านอีเมลกับเอเจนต์เบราว์เซอร์ ให้ส่วนนี้ตรวจเงื่อนไขของงานก่อน และส่งต่อเฉพาะรหัสที่ผ่านเงื่อนไขแล้วเท่านั้นไปให้เบราว์เซอร์กรอก ไม่ส่งคำแนะนำจากเนื้อหาอีเมลไปเป็นคำสั่งใหม่
เก็บคีย์ API ไว้ฝั่งบริการ ไม่วางในหน้าเว็บที่เอเจนต์กำลังควบคุม ใช้ขอบเขตกลุ่มที่จำเป็นและสิทธิ์ read เท่านั้น คุณดูรายละเอียดที่เกี่ยวข้องกับการปกป้องข้อมูลได้ในหน้าความปลอดภัยของ Mailera
ปิดบังรหัส ที่อยู่อีเมล และ token ในภาพหน้าจอ บันทึก และข้อมูลติดตาม สำหรับการวิเคราะห์ข้อผิดพลาด ให้เก็บสถานะงาน เหตุผลที่หยุด และรหัสอ้างอิงข้อความเท่าที่จำเป็น แทนการบันทึกเนื้อหาอีเมลทั้งหมด
ตัวอย่างนี้ไม่ให้สิทธิ์ send หากภายหลังเพิ่มการส่งอีเมล ให้ผู้ใช้ยืนยันก่อนส่ง และอย่าให้ข้อความในอีเมลเป็นผู้อนุมัติการส่งนั้นเอง นอกจากนี้ ไม่ให้เอเจนต์เปิดลิงก์จากอีเมลโดยอัตโนมัติ ขั้นตอนนี้ครอบคลุมการกรอก OTP ไม่ใช่ลิงก์ยืนยันทุกประเภท
Mailera ทำอะไรไม่ได้ในขั้นตอนนี้?
Mailera เชื่อมกล่องอีเมลเดิมให้แอปและเอเจนต์อ่านผ่าน REST API หรือ MCP ไม่ได้สร้างกล่องจดหมายหรือที่อยู่อีเมลใหม่ คุณต้องเตรียมกล่องที่มีอยู่และได้รับอนุญาตให้ใช้ก่อน และ Mailera ไม่รับประกันว่าอีเมลยืนยันจะเข้ากล่องจดหมายเข้าเสมอ การตรวจตำแหน่งข้อความช่วยให้แอปรู้สถานะ แต่ไม่ได้เปลี่ยนผลการคัดกรองของผู้ให้บริการ
แอปของคุณควรกำหนดเวลาสิ้นสุดการรอ ตรวจผลยืนยันบนเว็บไซต์ และมีทางส่งต่อให้คนตรวจ
การพักงาน รักษาเซสชันเบราว์เซอร์ และตัดสินใจกลับมาทำงานต่อเป็นตรรกะของแอปที่ควบคุมเอเจนต์ ต้องแยกตรรกะนี้จากการอ่านอีเมลให้ชัด เพื่อไม่ให้เบราว์เซอร์เดินหน้าต่อเพียงเพราะพบรหัส โดยยังไม่ได้ตรวจ
ให้เอเจนต์ AI ใช้กล่องจดหมายของคุณผ่าน MCP
เพิ่มเซิร์ฟเวอร์ MCP ของ Mailera ลงใน Claude, Cursor หรือ VS Code เพื่อให้เอเจนต์อ่าน จัดหมวดหมู่ และตอบอีเมลได้
ดูวิธีใช้ MCP








