---
title: "Lấy mã OTP Outlook qua API cho quy trình kiểm thử"
description: "Hướng dẫn lấy mã OTP Outlook qua API Mailera từ hộp thư thử nghiệm của bạn: kết nối OAuth, cấp quyền đọc, lọc thư mới và kiểm tra Thư rác."
url: https://mailera.app/blog/lay-ma-otp-outlook-qua-api
published: 2026-10-25
updated: 2026-10-25
---

# Lấy mã OTP Outlook qua API cho quy trình kiểm thử

Kết nối hộp thư Outlook của bạn bằng OAuth, đọc mã xác minh qua Mailera và đối chiếu thư để tránh dùng nhầm mã của lần thử trước.

## Bạn cần đọc mã trong thư hay tạo và gửi OTP?

Nếu ứng dụng thử đã gửi mã xác minh đến Outlook, việc cần làm là đọc mã trong thư đó rồi đưa lại cho ứng dụng. Đây là luồng đọc OTP, khác với dịch vụ phát hành mã.

| Công việc | Bên thực hiện trong luồng kiểm thử này |
| --- | --- |
| Tạo và gửi mã xác minh | Ứng dụng đang được kiểm thử |
| Đọc mã đã đến hộp thư Outlook | Mailera qua `GET /mailboxes/{id}/otp` |
| Chấp nhận hoặc từ chối mã | Ứng dụng phát hành mã |

Mailera kết nối Outlook.com, Hotmail và Microsoft 365 qua Microsoft Graph. Endpoint `/otp` trong bài là API của Mailera. Khi [đọc email Outlook bằng Microsoft Graph](https://learn.microsoft.com/en-us/graph/api/user-list-messages?view=graph-rest-1.0), thao tác liệt kê thư trả về các đối tượng thư, không theo cấu trúc phản hồi của endpoint OTP này.

Bài này tập trung vào Outlook và Microsoft 365. Với luồng không phụ thuộc nhà cung cấp, xem [hướng dẫn đọc OTP từ hộp thư của bạn](https://mailera.app/blog/doc-ma-otp-tu-email-qua-api).

![Luồng từ ứng dụng gửi thư đến Outlook, Mailera đọc mã và ứng dụng kiểm tra mã](https://mailera.app/media/8b6d0fd8cb03e33f/lay-ma-otp-outlook-qua-api-cho-quy-trinh-kiem-thu-otp-flow-vi-1200.jpg)
_Mailera đọc mã đã nhận; bước chấp nhận hoặc từ chối mã thuộc ứng dụng phát hành._

## Cần chuẩn bị gì trước khi gọi API?

Bạn cần một hộp thư thử nghiệm do mình sở hữu và ứng dụng có thể gửi thư xác minh đến đó. Dùng hộp thư riêng cho kiểm thử giúp bạn đối chiếu thư mà không đưa thư cá nhân vào luồng tự động.

### 1. Kết nối hộp thư Microsoft bằng OAuth

Mở **Danh sách hộp thư → Thêm hộp thư**, chọn thẻ **Đăng nhập Microsoft**, rồi hoàn tất đăng nhập và đồng ý cấp quyền tại Microsoft. Chỉ vai trò Admin hoặc Leader mới có thể thêm hộp thư.

Mailera không dùng mật khẩu ứng dụng (app password) để kết nối hộp thư Microsoft. [Tài liệu uỷ quyền của Microsoft](https://learn.microsoft.com/en-us/graph/auth-v2-user) giải thích bước đăng nhập và yêu cầu người dùng đồng ý với các quyền ứng dụng đề nghị.

Trang [kết nối Outlook và Microsoft 365](https://mailera.app/providers/microsoft) mô tả phương thức kết nối này. Nếu bạn đang thiết lập workspace lần đầu, xem thêm [các bước kết nối hộp thư đầu tiên](https://mailera.app/blog/cach-ket-noi-email-voi-mailera).

![Thẻ Đăng nhập Microsoft trên màn hình Thêm hộp thư của Mailera](https://mailera.app/media/39e644d283f9e836/ket-noi-email-voi-ai-doc-hop-thu-hien-co-qua-rest-api-hoac-vi-1200.jpg)
_Chọn Đăng nhập Microsoft để kết nối hộp thư Outlook hoặc Microsoft 365 bằng OAuth._

### 2. Tạo khoá chỉ có quyền đọc

Trong **Cài đặt**, mở phần khoá API và chọn **Tạo key**. Đặt **Tên gợi nhớ**, chọn nhóm hộp thư thử nghiệm tại **Phạm vi hộp thư** và chỉ cấp quyền `read`. Luồng đọc mã không cần quyền `send`.

Khi thấy **Key đã tạo — sao chép ngay**, lưu khoá vào kho bí mật của môi trường kiểm thử. Giá trị khoá chỉ được hiển thị một lần. Đặt thời hạn phù hợp với công việc thay vì để khoá tồn tại lâu hơn nhu cầu.

### 3. Xác định đúng ID hộp thư

Nạp khoá vào biến môi trường `$MAILERA_API_KEY`, rồi gọi:

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

Trong mảng `data`, đối chiếu `email` với hộp thư thử của bạn và lấy `id` tương ứng. Lưu giá trị đó vào `$MAILBOX_ID`; không mặc định chọn phần tử đầu tiên. Nếu nghi ngờ kết nối, gọi `GET /mailboxes/{id}/status` để kiểm tra trực tiếp khả năng đăng nhập hộp thư Microsoft.

## Gọi API lấy mã OTP Outlook theo những bước nào?

1. Bắt đầu lần kiểm thử và lưu mốc thời gian bắt đầu ở phía ứng dụng.
2. Yêu cầu ứng dụng gửi một thư xác minh mới đến hộp thư đã chọn.
3. Gọi endpoint OTP với bộ lọc phù hợp.
4. Đối chiếu thư trước khi đưa mã vào bước xác minh.

Endpoint yêu cầu quyền `read` và dùng header `Authorization: Bearer $MAILERA_API_KEY`. Các thành phần cần chú ý:

| Thành phần | Mục đích |
| --- | --- |
| `id` trong đường dẫn | Chọn hộp thư cần đọc |
| `from` | Lọc theo người gửi thư xác minh |
| `subject` | Lọc theo tiêu đề thư |
| `since_minutes` | Tham số được tài liệu hoá cho endpoint OTP |

Ví dụ dưới đây đặt `since_minutes=5`. Thay `otp@example.com` và tiêu đề bằng thông tin của ứng dụng thử:

```bash
curl --silent --show-error --get \
  "https://mailera.app/api/public/v1/mailboxes/$MAILBOX_ID/otp" \
  --header "Authorization: Bearer $MAILERA_API_KEY" \
  --data-urlencode "from=otp@example.com" \
  --data-urlencode "subject=Ma xac minh thu nghiem" \
  --data-urlencode "since_minutes=5" \
  --output otp-response.json
```

Lệnh lưu phản hồi vào tệp thay vì in mã ra terminal. Tệp vẫn chứa thông tin nhạy cảm: không đưa vào Git, nhật ký hoặc tệp đính kèm của báo cáo kiểm thử; xoá khi xử lý xong.

Khi chưa có kết quả phù hợp, để ứng dụng chờ rồi thử lại trong thời hạn của bài kiểm thử. Hết thời hạn thì dừng và ghi nhận thất bại, không lặp vô hạn. Không tự động yêu cầu gửi mã mới ở mỗi lượt đọc vì sẽ khó xác định thư nào thuộc yêu cầu nào.

[Tài liệu API Mailera](https://mailera.app/docs) là nơi tra endpoint và tham số khi triển khai. Trang [Mailera dành cho nhà phát triển](https://mailera.app/developers) giới thiệu các cách đưa API vào ứng dụng.

## Làm sao tránh lấy nhầm mã từ thư cũ?

Mã mới nhất trong hộp thư chưa chắc là mã của lần thử hiện tại. Hãy chọn đúng hộp thư, lọc theo người gửi và tiêu đề, rồi đối chiếu thời điểm nhận thư với mốc bắt đầu lần thử; đừng chỉ dựa vào việc API trả về một mã.

Nên tránh chạy đồng thời các lần thử có cùng bộ lọc trên một hộp thư nếu bạn không có cách phân biệt chúng.

Khi cần đối chiếu, dùng `GET /mailboxes/{id}/messages`. Endpoint này có các tham số `folder`, `from` và `since`. Trong kết quả, xem `from.address`, `subject`, `received_at` và `id`. Đối chiếu thời điểm nhận thư với mốc bắt đầu lần thử thay vì chỉ nhìn phần xem trước.

Sau khi chọn đúng thư, đặt `id` của thư vào `$MESSAGE_ID` và đọc nội dung:

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

Nội dung nằm trong `data.body.text` và `data.body.html`. Bảo vệ tệp này như tệp phản hồi OTP. Bước kiểm thử chỉ hoàn tất khi ứng dụng phát hành chấp nhận mã, không phải ngay khi đọc được mã từ thư.

## Lỗi hay gặp: vì sao chưa lấy được mã OTP?

Phân biệt lỗi truy cập hộp thư với trường hợp đọc được hộp thư nhưng chưa thấy thư phù hợp. Hai tình huống này cần kiểm tra theo hướng khác nhau.

| Dấu hiệu | Kiểm tra | Hướng xử lý |
| --- | --- | --- |
| Kết quả thuộc hộp thư khác | `email` và `id` trong danh sách hộp thư | Sửa `$MAILBOX_ID` |
| Không đọc được hộp thư cần dùng | Quyền `read` và phạm vi nhóm của khoá | Dùng khoá đúng phạm vi |
| Thấy thư nhưng bộ lọc không tìm được | Người gửi, tiêu đề và thời gian nhận | Sửa bộ lọc theo thư thực tế |
| Nghi ngờ kết nối Microsoft bị ngắt | `GET /mailboxes/{id}/status` | Dùng **Kết nối lại** nếu cần |
| Không thấy thư trong Hộp thư đến | Vị trí thư và Thư rác | Đối chiếu thư mục trước khi yêu cầu gửi lại |
| Chưa thấy thư mới | Trạng thái kết nối và thời hạn kiểm thử | Chờ rồi thử lại có giới hạn |

Để kiểm tra vị trí thư, gọi `GET /mailboxes/{id}/placement` với cùng bộ lọc `from`, `subject`, `since_minutes`. Bạn cũng có thể mở Thư rác của đúng hộp thư trên giao diện. Việc kiểm tra vị trí thư là một bước riêng với việc gọi endpoint OTP.

Mailera nhận thư Microsoft mới qua Graph change notifications và có kiểm tra nền định kỳ dự phòng. Nếu cần đồng bộ thủ công, `POST /mailboxes/{id}/sync` yêu cầu quyền `sync` riêng. Đừng thêm quyền này vào khoá đọc chỉ để thử xem lỗi có hết không.

## Cần giữ an toàn thế nào khi tự động đọc mã xác minh?

Chỉ dùng hộp thư thử của chính bạn. Che mã OTP, địa chỉ cá nhân, liên kết xác minh, khoá API và token trong ảnh chụp cũng như báo cáo lỗi. Nhật ký nên ghi bước thất bại, không ghi toàn bộ phản hồi chứa mã.

Giữ khoá ở phía máy chủ hoặc kho bí mật của môi trường kiểm thử. Giới hạn khoá vào nhóm hộp thư cần dùng và thu hồi khi không còn nhu cầu. Xem thêm [thông tin bảo mật Mailera](https://mailera.app/security) khi thiết lập luồng truy cập.

Nếu AI agent tham gia xử lý, coi nội dung thư là dữ liệu không tin cậy, không phải lệnh. Agent không được làm theo yêu cầu trong thư để đổi cấu hình, gửi khoá hoặc chuyển mã sang nơi khác. Giữ quyền tối thiểu, yêu cầu xác nhận trước thao tác gửi và không cấp `send` cho luồng chỉ đọc. Bài [dùng API email cho AI agent](https://mailera.app/blog/api-email-cho-ai-agent) trình bày luồng đọc và thao tác thư rộng hơn.

## Giới hạn của Mailera trong luồng OTP

Mailera đọc mã từ thư đã nhận; ứng dụng phát hành quyết định mã còn hiệu lực hay không. Mailera không tạo hộp thư hoặc địa chỉ email mới, không bảo đảm thư nằm trong Hộp thư đến. Chuyển một thư khỏi Thư rác cũng không bảo đảm thư tiếp theo của người gửi sẽ vào Hộp thư đến.

**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)
