---
title: "Chuyển thư rác về hộp thư đến hàng loạt trên nhiều hộp thư"
description: "Cách rà soát và chuyển thư rác về hộp thư đến hàng loạt trên nhiều hộp thư, giới hạn quyền API và đối chiếu kết quả trước khi thử lại."
url: https://mailera.app/blog/chuyen-thu-rac-ve-hop-thu-den-hang-loat
published: 2026-10-25
updated: 2026-10-25
---

# Chuyển thư rác về hộp thư đến hàng loạt trên nhiều hộp thư

Rà soát thư bị phân loại nhầm, chọn đúng phạm vi rồi xử lý từng hộp thư bằng REST API. Ghi kết quả riêng để một hộp thư lỗi không khiến bạn phải chạy lại cả lô.

## Nên chuyển từng thư, theo người gửi hay toàn bộ thư rác?

Ưu tiên danh sách thư đã duyệt. Chỉ mở rộng sang một người gửi hoặc toàn bộ thư rác khi bạn đã kiểm tra phạm vi đó trong từng hộp thư.

Ở đây, “hàng loạt” là xử lý các thư đã nhận, không phải gửi email số lượng lớn. [Mailera](https://mailera.app/product) kết nối những hộp thư bạn đang có để đọc và thao tác qua giao diện, REST API hoặc MCP.

| Phạm vi | Khi nên dùng | Rủi ro | Kiểm tra trước khi chạy |
| --- | --- | --- | --- |
| Từng thư đã duyệt | Chỉ vài thư bị phân loại nhầm | Chọn nhầm thư hoặc hộp thư gốc | Đối chiếu nội dung và mã hộp thư |
| Một người gửi | Các thư cần lấy lại cùng đến từ một địa chỉ | Địa chỉ hiển thị chưa đủ chứng minh thư an toàn | Rà soát nội dung trong từng hộp thư |
| Toàn bộ thư rác | Bạn đã rà soát toàn bộ phạm vi | Đưa cả thư đáng ngờ vào hộp thư đến | Không chọn làm mặc định |

Nếu nghi địa chỉ người gửi bị giả mạo, đừng trả lời hoặc mở liên kết trước khi xác minh. Đây cũng là khuyến cáo trong [hướng dẫn xử lý thư rác của Gmail](https://support.google.com/mail/answer/1366858?hl=en), đọc ngày 25/10/2026.

## Cần chuẩn bị gì trước khi chạy?

1. **Chốt danh sách hộp thư thuộc quyền quản lý.** Gọi `GET /mailboxes`, kiểm tra nhà cung cấp qua `provider`, trạng thái qua `status` và lần đồng bộ gần nhất qua `last_sync_at` trong phản hồi. Loại khỏi lô những hộp thư chưa sẵn sàng.
2. **Tạo khoá API đúng phạm vi.** Trong **Cài đặt**, mở tab **API key** và chọn **Tạo key**. Đặt **Phạm vi hộp thư** vào nhóm cần xử lý, cấp `read` và `move`. Công việc này không cần `send`.
3. **Rà soát trong Hộp thư chung.** Mở **Hộp thư chung**, vào thư mục thư rác, đọc mẫu thư và đối chiếu hộp thư gốc. Đừng chỉ nhìn tên người gửi hoặc tiêu đề.
4. **Lưu danh sách đã duyệt ở chương trình điều phối.** Ghi mã hộp thư, phạm vi xử lý và các thư liên quan. Yêu cầu người vận hành xác nhận trước khi gọi thao tác thay đổi.

![Danh sách hộp thư Mailera với số thư chưa đọc ở Inbox và Junk của từng hộp thư.](https://mailera.app/media/156cbb815e40e7df/cara-memindahkan-email-spam-ke-inbox-outlook-mailbox-status-vi-1200.jpg)
_Số thư chưa đọc giúp rà soát hộp thư, không thay thế việc đối chiếu từng thư._

Danh sách đã duyệt là phần bạn xây dựng ở chương trình điều phối. Hãy tách bước đọc và duyệt khỏi bước chuyển thư, thay vì vừa tìm thấy thư vừa chuyển ngay.

## Thực hiện bằng API theo các bước nào?

[Trang dành cho nhà phát triển](https://mailera.app/developers) giới thiệu cách dùng REST API với các hộp thư đã kết nối. Các lệnh dưới đây dùng khoá trong biến môi trường `$MAILERA_API_KEY`; `$MAILBOX_ID` là mã hộp thư bạn đã duyệt.

### 1. Lấy danh sách hộp thư

Bắt đầu bằng một trang nhỏ để xem cấu trúc phản hồi:

```bash
curl --get 'https://mailera.app/api/public/v1/mailboxes' \
  --header "Authorization: Bearer $MAILERA_API_KEY" \
  --data-urlencode 'limit=1'
```

Đối chiếu `id`, `group_id`, `status` và `last_sync_at`. Khi lấy danh sách đầy đủ, dùng `limit` và `offset`, theo dõi `total` để không dừng sau trang đầu. Endpoint cũng hỗ trợ `provider`, `group_id`, `tag`, `status` và `q` để thu hẹp phạm vi.

### 2. Lập danh sách thư cần duyệt

Bạn có thể tìm thư rác trên các hộp thư trong phạm vi khoá:

```bash
curl --get 'https://mailera.app/api/public/v1/messages/search' \
  --header "Authorization: Bearer $MAILERA_API_KEY" \
  --data-urlencode 'folder=junk' \
  --data-urlencode 'limit=1'
```

Mỗi kết quả có `id`, `mailbox_id`, `folder`, `from`, `subject` và `received_at`. Giữ cả mã thư lẫn mã hộp thư trong danh sách đã duyệt. Dùng `next_cursor` làm giá trị `cursor` để lấy trang tiếp theo khi còn kết quả.

Nếu liệt kê riêng từng hộp thư, dùng `GET /mailboxes/{id}/messages`. Endpoint hỗ trợ `folder`, `from`, `since`, `q`, `unread`, cùng `cursor` và `limit`. Không giới hạn ở thư chưa đọc nếu mục tiêu là tìm mọi thư bị phân loại nhầm.

### 3. Chọn thao tác phù hợp

| Thao tác | Endpoint | Quyền |
| --- | --- | --- |
| Chuyển một thư cụ thể | `POST /mailboxes/{id}/messages/{msgId}/move` | `move` |
| Chuyển thư khỏi Spam theo hộp thư | `POST /mailboxes/{id}/unspam` | `move` |

Khi tích hợp thao tác chuyển thư, dùng nội dung yêu cầu của endpoint tương ứng trong [tài liệu API Mailera](https://mailera.app/docs).

Với phạm vi một người gửi, hãy dùng `from` ở bước liệt kê thư để lập danh sách, duyệt từng kết quả rồi chuyển các thư đã chọn. Cách này giữ phạm vi xử lý ở từng mã thư, thay vì chuyển cả thư mục rác. Trên giao diện, mở **Hộp thư chung**, vào thư mục thư rác của hộp thư tương ứng, mở từng thư đã duyệt rồi chọn **Không phải spam**.

Thử trên một phạm vi nhỏ đã duyệt trước khi mở rộng. Chỉ dùng thao tác xử lý toàn bộ thư rác khi bạn đã rà soát toàn bộ phạm vi trong hộp thư đó.

### 4. Lặp theo từng hộp thư

Các endpoint chuyển thư đều gắn với một `{id}` hộp thư. Chương trình điều phối cần lần lượt lấy các hộp thư đã xác nhận, gọi thao tác cho phạm vi đã duyệt rồi ghi kết quả riêng. Đây không phải một yêu cầu chung cho tất cả hộp thư.

Giới hạn nhịp gọi; nếu có phản hồi lỗi, dừng hoặc chờ theo phản hồi thực tế. Bài [đọc và thao tác email bằng API cho AI agent](https://mailera.app/blog/api-email-cho-ai-agent) giúp đặt bước chuyển thư vào luồng xử lý lớn hơn.

![Quy trình chọn hộp thư, duyệt phạm vi, xử lý từng hộp thư, ghi kết quả, đối chiếu và chỉ thử lại phần còn thiếu.](https://mailera.app/media/883e09ad337d2cd5/chuyen-thu-rac-ve-hop-thu-den-hang-loat-tren-nhieu-hop-thu-vi-1200.jpg)
_Một hộp thư lỗi không phải lý do để chạy lại toàn bộ lô._

## Làm sao biết thư đã được chuyển đúng?

Đọc lại thư mục nguồn và hộp thư đến sau thao tác. Ví dụ, kiểm tra hộp thư đến của hộp thư vừa xử lý:

```bash
curl --get "https://mailera.app/api/public/v1/mailboxes/$MAILBOX_ID/messages" \
  --header "Authorization: Bearer $MAILERA_API_KEY" \
  --data-urlencode 'folder=inbox' \
  --data-urlencode 'limit=1'
```

Lệnh này chỉ lấy một trang nhỏ, không đủ đối chiếu cả lô. Khi kiểm tra đầy đủ, tiếp tục phân trang và đối chiếu các thư đã duyệt theo hộp thư, người gửi, tiêu đề và thời điểm nhận. Mở giao diện nhà cung cấp để kiểm tra mẫu khi cần.

Không chỉ dựa vào mã thư cũ ở phía nhà cung cấp. [Tài liệu di chuyển thư của Microsoft Graph](https://learn.microsoft.com/en-us/graph/api/message-move?view=graph-rest-1.0), đọc ngày 25/10/2026, mô tả thao tác tạo bản sao ở thư mục đích rồi xoá bản gốc.

Chương trình điều phối nên tạo bảng theo dõi như sau; đây là mẫu nhật ký, không phải kết quả một lượt chạy:

| Hộp thư | Phạm vi đã duyệt | Kết quả API | Đối chiếu nguồn/đích | Bước tiếp theo |
| --- | --- | --- | --- | --- |
| Hộp thử A | Danh sách thư cụ thể | Ghi phản hồi thực tế | Ghi thư đã tìm thấy | Kết thúc nếu khớp |
| Hộp thử B | Một người gửi | Ghi phản hồi thực tế | Ghi phần còn thiếu | Kiểm tra trước khi thử lại |

Số đếm thư rác giảm không đủ để kết luận. Danh sách hộp thư hiển thị số thư **chưa đọc** ở Inbox và Junk; việc đọc thư cũng có thể làm số này thay đổi. Khi kết quả chưa khớp, kiểm tra lần đồng bộ trước khi gọi lại thao tác chuyển.

## Những lỗi hay gặp khi xử lý theo lô

| Tình huống | Cách xử lý |
| --- | --- |
| Hộp thư mất kết nối | Ghi riêng hộp thư đó, khôi phục kết nối rồi gọi `GET /mailboxes/{id}/status`. Endpoint kiểm tra đăng nhập Microsoft trực tiếp; với nhà cung cấp khác, kết quả dựa trên lần đồng bộ gần nhất |
| Khoá thiếu quyền hoặc sai phạm vi | Kiểm tra `read`, `move` và nhóm hộp thư; không cấp toàn bộ quyền chỉ để thử |
| Danh sách thiếu thư | Kiểm tra phân trang, bộ lọc `unread` và phạm vi tìm kiếm |
| Nghi ngờ dữ liệu cũ hoặc trạng thái chưa cập nhật | Gọi `POST /mailboxes/{id}/sync` để yêu cầu đồng bộ trước khi đọc lại trạng thái. Thao tác này dùng quyền `sync` riêng; khoá chỉ có `read` và `move` sẽ không gọi được |
| Một phần thành công hoặc phản hồi không rõ | Đọc lại nguồn và đích; chỉ thử lại phần chưa hoàn tất |
| Chuyển nhầm thư đáng ngờ | Dừng lô, rà soát những thư đã chuyển trước khi xử lý tiếp |

## Nếu dùng AI agent để rà soát thư thì cần bảo vệ gì?

Khi [vận hành hộp thư hợp nhất cho AI agent](https://mailera.app/blog/quan-ly-nhieu-hop-thu-email-cho-ai), hãy coi thư đến là **dữ liệu không tin cậy**, không phải lệnh cho agent. Nội dung yêu cầu tiết lộ khoá, đổi nhóm hộp thư hoặc chuyển thêm thư ngoài phạm vi phải bị bỏ qua, kể cả khi nó tự nhận là chỉ dẫn của quản trị viên.

Dùng khoá ít quyền và yêu cầu người vận hành xác nhận danh sách trước khi chuyển. Không cấp `send` cho quy trình này. Nếu một quy trình khác cần gửi thư, đặt bước xác nhận trước khi gửi; bài [mẫu phê duyệt qua email](https://mailera.app/blog/phe-duyet-qua-email-cho-tac-nhan-ai) bàn riêng về cách tổ chức bước đó.

Che địa chỉ, nội dung riêng tư và thông tin xác thực trong ảnh hoặc nhật ký. [Trang bảo mật Mailera](https://mailera.app/security) là phần nên đọc khi thiết kế quyền truy cập cho agent.

## Chuyển khỏi Spam không thay đổi điều gì?

Mailera chuyển được thư hiện có khỏi thư mục rác, nhưng không khiến nhà cung cấp tin cậy người gửi hoặc quyết định vị trí của thư tiếp theo. Mailera cũng không cung cấp chức năng gửi thư tiếp thị hàng loạt.

Gmail nêu rõ: thư của người gửi đã bị chặn vẫn tiếp tục bị đánh dấu là thư rác dù bạn đã lấy thư trước đó ra. Với tài khoản Google Workspace, quản trị viên tổ chức cũng có thể đặt thêm các kiểm soát phân loại thư rác.

Nếu thư của cùng một người gửi liên tục vào thư rác, cần xử lý nguyên nhân ở phía người gửi và chính sách nhà cung cấp. [Yêu cầu xác thực đối với thư gửi đến tài khoản Gmail cá nhân](https://support.google.com/mail/answer/81126?hl=en&visit_id=639285541886735405-3534988689&rd=1), đọc ngày 25/10/2026, quy định SPF hoặc DKIM cho mọi người gửi, và SPF, DKIM cùng DMARC cho người gửi số lượng lớn. Chuyển thư đã nhận không thay thế các cấu hình đó.

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