---
title: "Đọc mã OTP từ email Yahoo và iCloud bằng API"
description: "Kết nối Yahoo Mail hoặc iCloud Mail bằng mật khẩu ứng dụng, đọc OTP qua API Mailera và xử lý lỗi đồng bộ trong quy trình kiểm thử được phép."
url: https://mailera.app/blog/doc-otp-yahoo-icloud-bang-api
published: 2026-10-25
updated: 2026-10-25
---

# Đọc mã OTP từ email Yahoo và iCloud bằng API

Kết nối hộp thư thử bằng mật khẩu ứng dụng, kiểm tra đồng bộ rồi đọc mã qua API Mailera. Phần cần chú ý là chọn đúng thư, không phải chỉ lấy được một mã.

## Có thể đọc OTP trong Yahoo Mail và iCloud Mail bằng API không?

Có. Bạn kết nối hộp thư sẵn có, rồi dùng API Mailera để đọc mã xác minh gửi đến hộp thư đó. Đây là API của Mailera, không phải API đăng nhập Yahoo hay API chính thức của Apple.

OTP trong bài là mã được ứng dụng thử gửi qua email, không phải cách khôi phục quyền đăng nhập tài khoản nhà cung cấp. Chẳng hạn, [Apple hướng dẫn nhận mã xác thực tài khoản](https://support.apple.com/en-us/102606) qua thiết bị tin cậy, tin nhắn hoặc cuộc gọi; các kênh đó không nằm trong luồng đọc email này.

[Mailera kết nối các hộp thư bạn đã có](https://mailera.app/product), không tạo hộp thư hoặc địa chỉ email mới. Kết quả còn phụ thuộc thư đã đến và được đồng bộ; không nên thiết kế lượt thử dựa trên giả định mã sẽ có ngay.

![Luồng từ ứng dụng thử gửi email đến Yahoo hoặc iCloud, Mailera đồng bộ và ứng dụng đọc OTP qua API.](https://mailera.app/media/5f84e24013fd845c/doc-ma-otp-tu-email-yahoo-va-icloud-bang-api-otp-flow-vi-1200.jpg)
_Thư cần đến hộp thư và được đồng bộ trước khi ứng dụng đọc mã qua API._

Nếu cần quy trình chung cho các nhà cung cấp, xem bài [đọc OTP từ hộp thư của chính bạn](https://mailera.app/blog/doc-ma-otp-tu-email-qua-api). 

## Cần chuẩn bị gì cho từng nhà cung cấp?

Chỉ dùng hộp thư thử thuộc sở hữu của bạn. Với cả hai nhà cung cấp, mật khẩu điền vào Mailera là mật khẩu ứng dụng, không phải mật khẩu đăng nhập thông thường.

| Nội dung | Yahoo Mail | iCloud Mail |
| --- | --- | --- |
| Kết nối với Mailera | IMAP với mật khẩu ứng dụng | IMAP với mật khẩu dành riêng cho ứng dụng |
| Điều kiện cần chú ý | Tài khoản phải có khả năng tạo mật khẩu ứng dụng | Apple Account phải bật xác thực hai yếu tố |
| Tài liệu tạo mật khẩu | [Hướng dẫn mật khẩu ứng dụng Yahoo](https://help.yahoo.com/kb/SLN15241.html) | [Hướng dẫn mật khẩu dành riêng cho ứng dụng Apple](https://support.apple.com/en-us/102654) |
| Khi đổi mật khẩu chính | Mật khẩu ứng dụng vẫn còn hiệu lực; muốn vô hiệu hóa phải xóa nó | Đổi hoặc đặt lại mật khẩu chính tự động thu hồi toàn bộ mật khẩu ứng dụng |

Các hướng dẫn Yahoo và Apple ở bảng trên được đọc ngày 25/10/2026.

### Yahoo: tạo mật khẩu ứng dụng

1. Mở trang bảo mật tài khoản Yahoo, tìm “External connections”, chọn “Create app password”.
2. Nhập tên ứng dụng, rồi chọn “Generate password”.
3. Dùng mật khẩu vừa tạo cho kết nối Mailera.

Nếu thiếu tùy chọn tạo, làm theo hướng dẫn hỗ trợ của Yahoo. Yahoo khuyên dùng trình duyệt đã đăng nhập tài khoản trong vài ngày liên tiếp và tránh chế độ ẩn danh. Bộ phận hỗ trợ không thể thay đổi kết quả xét điều kiện tạo mật khẩu ứng dụng; đừng mặc định mọi tài khoản đều dùng được bước này.

### iCloud: kiểm tra xác thực hai yếu tố

1. Đảm bảo Apple Account đã bật xác thực hai yếu tố.
2. Đăng nhập Apple Account tại `account.apple.com`, vào “Sign-In and Security” → “App-Specific Passwords”.
3. Chọn “Generate an app-specific password” và làm theo hướng dẫn trên màn hình.

[Tài liệu máy chủ iCloud Mail](https://support.apple.com/en-us/102525) cũng yêu cầu mật khẩu dành riêng cho ứng dụng khi cấu hình máy chủ nhận thư. Bạn có thể đối chiếu cách kết nối trên trang [Yahoo Mail](https://mailera.app/providers/yahoo) và [iCloud Mail của Mailera](https://mailera.app/providers/icloud).

## Kết nối hộp thư Yahoo hoặc iCloud với Mailera như thế nào?

Bạn cần vai trò Admin hoặc Leader để thêm hộp thư.

1. Mở **Danh sách hộp thư** → **Thêm hộp thư**, chọn **Một hộp thư**.
2. Nhập **Địa chỉ email**, kiểm tra nhà cung cấp được nhận diện. Nếu cần, chọn lại trong **Hoặc chọn nhà cung cấp**, rồi chọn **Tiếp tục**.
3. Trong **Thông tin kết nối**, điền mật khẩu ứng dụng vào **Mật khẩu**. Chọn **Nhóm quản lý** dành cho hộp thư thử.
4. Chọn **Kiểm tra & kết nối**. Xem kết quả **Đăng nhập nhận thư** và **Nhận ra thư mục**. Bước này đăng nhập thử, không gửi email.
5. Nếu nhận thư thành công nhưng gửi thư thất bại, chọn **Lưu ở chế độ Chỉ nhận**. Đọc OTP không cần khả năng gửi thư.
6. Trở lại danh sách, kiểm tra trạng thái và lần đồng bộ gần nhất trước khi kích hoạt lượt thử.

![Màn hình thêm hộp thư Mailera với phần nhập mật khẩu ứng dụng và nút Kiểm tra & kết nối.](https://mailera.app/media/39e644d283f9e836/ket-noi-email-voi-ai-doc-hop-thu-hien-co-qua-rest-api-hoac-vi-1200.jpg)
_Điền mật khẩu ứng dụng vào trường Mật khẩu, không dùng mật khẩu đăng nhập thông thường._

Sau khi kết nối thành công, Mailera tải thư trong thời hạn lưu trữ, từ mới đến cũ. Nếu cần xem đầy đủ thao tác giao diện, dùng hướng dẫn [kết nối hộp thư đầu tiên với Mailera](https://mailera.app/blog/cach-ket-noi-email-voi-mailera).

Với Yahoo và iCloud, `GET /mailboxes/{id}/status` báo trạng thái đăng nhập dựa trên lần đồng bộ gần nhất. Đây không phải lần đăng nhập trực tiếp mới vào nhà cung cấp. Vì vậy, hãy xem cả thời điểm đồng bộ, thay vì chỉ nhìn trạng thái hộp thư.

## Gọi API nào để đọc đúng mã OTP?

### 1. Tạo khóa chỉ có quyền cần thiết

Vào **Cài đặt**, mở phần API key và chọn **Tạo key**. Đặt **Phạm vi hộp thư** là nhóm thử, cấp quyền `read` và đặt **Thời hạn** phù hợp. Không cần quyền `send` để đọc mã.

Khóa chỉ hiển thị một lần. Lưu khóa trong nơi quản lý bí mật của môi trường thử, rồi cung cấp qua biến môi trường `$MAILERA_API_KEY`. Không đưa khóa vào mã nguồn hay nhật ký CI. Chi tiết endpoint nằm trong [tài liệu API Mailera](https://mailera.app/docs).

### 2. Lấy đúng định danh hộp thư

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

Trong `data`, đối chiếu `email` và `provider`, rồi lấy `id` của hộp thư thử để đặt vào `$MAILBOX_ID`. Xem thêm `status` và `last_sync_at`. Đừng lấy phần tử đầu tiên chỉ vì yêu cầu đã trả về thành công.

### 3. Gửi email xác minh từ ứng dụng thử rồi đọc mã

Kích hoạt luồng gửi email xác minh trong ứng dụng bạn có quyền kiểm thử. Sau đó gọi `GET /mailboxes/{id}/otp`, endpoint lấy OTP mới nhất và yêu cầu quyền `read`.

Endpoint hỗ trợ các tham số `from`, `subject` và `since_minutes`. Ví dụ dưới dùng người gửi và tiêu đề giả; thay chúng bằng thông tin thư của ứng dụng thử.

```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=verify@example.com' \
  --data-urlencode 'subject=Ma xac minh thu nghiem' \
  --data-urlencode 'since_minutes=5'
```

| Tham số | Dùng để thu hẹp theo |
| --- | --- |
| `from` | Người gửi thư xác minh |
| `subject` | Tiêu đề thư |

Các bộ lọc thu hẹp thư cần đọc, nhưng không tự xác định mã thuộc đúng lượt thử. Nếu có nhiều thư tương tự, hãy đối chiếu người nhận, thời điểm và nội dung thư trước khi dùng kết quả.

Nếu cần chờ thư, đặt thời hạn tổng cho vòng kiểm tra và có khoảng nghỉ giữa các lần gọi. Hết thời hạn thì báo lỗi cho lượt thử; không tiếp tục bằng mã khác chỉ để bài kiểm thử chạy qua. Không ghi phản hồi chứa OTP vào nhật ký dùng chung.

## Lỗi hay gặp: vì sao không thấy mã hoặc lấy nhầm mã?

Tách hai việc: thư đã đồng bộ chưa, và thư có đúng với lượt thử không. Gọi lại endpoint OTP không sửa được lỗi mật khẩu ứng dụng hay kết nối hộp thư.

| Triệu chứng | Kiểm tra | Hướng xử lý |
| --- | --- | --- |
| Yahoo không có tùy chọn tạo mật khẩu ứng dụng | Trang bảo mật và hướng dẫn Yahoo | Dừng ở hướng dẫn hỗ trợ; không thay bằng mật khẩu chính |
| Kết nối thất bại | Mật khẩu đã nhập và kết quả đăng nhập nhận thư | Dùng đúng mật khẩu ứng dụng của hộp thư đó |
| iCloud mất kết nối sau khi đổi mật khẩu chính | Mật khẩu ứng dụng đã bị thu hồi | Tạo mật khẩu ứng dụng mới rồi kết nối lại |
| Chưa thấy thư mới | Thời điểm đồng bộ gần nhất | Chờ đồng bộ hoặc yêu cầu đồng bộ bằng khóa có quyền phù hợp |
| Không tìm thấy mã phù hợp | Người gửi, tiêu đề, thời điểm nhận | Đối chiếu thư gốc; sửa bộ lọc nếu sai |
| Thư không ở hộp thư đến | Vị trí thư qua endpoint `placement` | Kiểm tra Thư rác; dùng nút Kéo khỏi Spam hoặc endpoint `unspam` nếu cần đọc thư đó |
| Lấy nhầm mã | Có nhiều thư giống nhau | Xác định lại thư thuộc lượt thử trước khi dùng mã |

Để xem thư đã đồng bộ trong hộp thư đến:

```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=inbox' \
  --data-urlencode 'limit=5'
```

Đối chiếu các trường `from.address`, `subject`, `received_at` và `folder`. Lấy `id` của thư cần xem, đặt vào `$MESSAGE_ID`, rồi đọc nội dung:

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

Nội dung nằm trong `data.body.text` và `data.body.html`. Xem thư gốc giúp bạn phát hiện sai người gửi hoặc nhầm lượt thử mà không phải đoán cách trích xuất mã.

Dùng `GET /mailboxes/{id}/placement` với `from`, `subject`, `since_minutes` để kiểm tra thư ở hộp thư đến hay Thư rác. Đừng dùng việc endpoint OTP không trả mã làm căn cứ kết luận thư chưa đến.

Nếu cần chủ động đồng bộ, `POST /mailboxes/{id}/sync` yêu cầu quyền `sync` riêng và cũng đánh thức hộp thư đang ngủ. Khóa chỉ có `read` không thực hiện được thao tác này.

Mailera có thể giúp bạn kéo một thư ra khỏi Thư rác để đọc được mã, nhưng việc này không đảm bảo thư tiếp theo sẽ vào Hộp thư đến — quyết định lọc vẫn do nhà cung cấp và cấu hình người gửi (SPF/DKIM/DMARC) quyết định.

## Giữ an toàn cho hộp thư và mã xác minh thế nào?

Chỉ đọc mã trong hộp thư thử của bạn, cho quy trình được phép. Không dùng luồng này để truy cập mã của người khác.

Không ghi mật khẩu ứng dụng, khóa API hay OTP vào nhật ký. Khi chụp ảnh lỗi, che địa chỉ cá nhân, mã và liên kết xác minh. Giới hạn khóa trong nhóm hộp thư thử, cấp ít quyền nhất và thu hồi khi kết thúc; xem thêm [thông tin bảo mật Mailera](https://mailera.app/security).

Nếu chuyển nội dung thư cho AI agent, coi thư là dữ liệu không tin cậy, không phải lệnh. Agent không được làm theo chỉ dẫn trong thư để tiết lộ bí mật hoặc gọi công cụ. Nếu agent của bạn còn được cấp quyền gửi email ở bước khác trong quy trình, luôn yêu cầu xác nhận trước khi gửi.

**Làm điều này bằng API** — Mọi thao tác trong bài đều có REST API kèm ví dụ curl, khoá API và webhook. [Xem tài liệu API](https://mailera.app/docs)
