> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Nhật ký email khách hàng

> Xem mọi email giao dịch mà Dodo Payments đã gửi cho khách hàng, kiểm tra email có đến nơi hay không, đọc email chính xác như khi được gửi và gửi lại email.

<CardGroup cols={2}>
  <Card title="List Customer Emails" icon="list" href="/api-reference/customers/list-customer-emails">
    Đọc các email đã gửi cho khách hàng và kết quả phân phối của chúng.
  </Card>

  <Card title="Get Email Content" icon="envelope-open" href="/api-reference/customers/get-customer-email-body">
    Đọc một email chính xác như khi được gửi.
  </Card>
</CardGroup>

## Tổng quan

Dodo Payments gửi email giao dịch cho khách hàng thay mặt bạn: biên lai, thông báo hoàn tiền, thông báo subscription, email nhắc thanh toán và khôi phục, cấp entitlement, cùng các liên kết đăng nhập Customer Portal.

Tab **Email đã gửi** trên hồ sơ khách hàng ghi lại từng email. Với mỗi email, bạn có thể xem nội dung đã gửi, email đã đến đâu và lý do email không đến nơi nếu có lỗi. Bạn có thể mở email mà khách hàng đã nhận và gửi lại email đó.

<Frame>
  <img src="https://mintcdn.com/dodopayments/9G2eOufWVa-OvQvG/images/email-logs/sent-emails-tab.png?fit=max&auto=format&n=9G2eOufWVa-OvQvG&q=85&s=6c7fa235800cee5c32eb286312f2a52b" alt="Tab Email đã gửi trên hồ sơ khách hàng, liệt kê từng email cùng trạng thái phân phối" style={{ maxHeight: '500px', width: 'auto' }} width="2310" height="996" data-path="images/email-logs/sent-emails-tab.png" />
</Frame>

<Info>
  Email được lưu trong **180 ngày**. Trạng thái phân phối đến từ nhà cung cấp email và được cập nhật trong vài giây sau sự kiện.
</Info>

## Xem email của khách hàng

<Steps>
  <Step title="Open the customer">
    Đi đến **Customers** trong dashboard và chọn khách hàng.
  </Step>

  <Step title="Open the Sent Emails tab">
    Tab này liệt kê mọi email đã gửi cho khách hàng trong 180 ngày gần nhất, theo thứ tự mới nhất trước.
  </Step>

  <Step title="Read a row">
    Mỗi hàng hiển thị tiêu đề, người gửi bên dưới, danh mục, ngày và giờ, cùng trạng thái phân phối.
  </Step>
</Steps>

## Trạng thái phân phối

| Trạng thái   | Ý nghĩa                                                                                                   |
| ------------ | --------------------------------------------------------------------------------------------------------- |
| `sent`       | Dodo Payments đã chuyển email cho nhà cung cấp. Email đang được gửi đi.                                   |
| `delivered`  | Mail server nhận đã chấp nhận email.                                                                      |
| `failed`     | Email không đến nơi. Lý do lỗi được hiển thị.                                                             |
| `complained` | Người nhận đã đánh dấu email là spam.                                                                     |
| `blocked`    | Không có email nào được gửi. Trong test mode, điều này có nghĩa là hạn mức hàng tuần đã được sử dụng hết. |

### Lý do lỗi

Khi email không gửi được, hàng đó hiển thị lý do để bạn biết có cần hành động hay không. Di con trỏ lên trạng thái **Failed** để đọc lý do:

| Lý do                                    | Ý nghĩa                                                                           | Việc cần làm                      |
| ---------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------- |
| Mailbox không tồn tại                    | Địa chỉ không tồn tại.                                                            | Sửa địa chỉ email của khách hàng. |
| Mail server từ chối địa chỉ              | Server nhận đã từ chối địa chỉ.                                                   | Sử dụng địa chỉ khác.             |
| Địa chỉ bị chặn sau các lần lỗi trước đó | Nhà cung cấp đã chặn địa chỉ này sau một lần hard bounce hoặc khiếu nại trước đó. | Sử dụng địa chỉ khác.             |
| Mailbox đã đầy                           | Mailbox của người nhận đã hết dung lượng.                                         | Gửi lại sau.                      |
| Lỗi phân phối tạm thời                   | Sự cố tạm thời tại server nhận.                                                   | Gửi lại sau.                      |
| Tin nhắn bị từ chối vì quá lớn           | Server nhận đã từ chối kích thước email.                                          | Liên hệ bộ phận hỗ trợ.           |
| Người nhận đã đánh dấu email là spam     | Người nhận đã báo cáo email.                                                      | Không gửi lại email này.          |
| Không thể gửi email                      | Nhà cung cấp đã từ chối việc gửi.                                                 | Gửi lại.                          |

Năm trong số các lý do này yêu cầu sử dụng địa chỉ khác khi gửi lại, vì cùng địa chỉ đó sẽ tiếp tục bị lỗi. Đó là: mailbox không tồn tại, địa chỉ bị từ chối, địa chỉ bị chặn sau các lần lỗi trước đó, tin nhắn bị từ chối vì quá lớn và người nhận đã đánh dấu email là spam.

## Đọc email

Chọn **Resend** trên một hàng để mở bảng email. **Email Preview** trong bảng đó hiển thị bản sao được lưu trữ chính xác như khi email được gửi.

<Frame>
  <img src="https://mintcdn.com/dodopayments/9G2eOufWVa-OvQvG/images/email-logs/email-preview.png?fit=max&auto=format&n=9G2eOufWVa-OvQvG&q=85&s=b0d00b4b6fe62c6ace0b8a2b4419619b" alt="Nội dung email được lưu trữ, hiển thị như khi khách hàng nhận được" style={{ maxHeight: '500px', width: 'auto' }} width="824" height="1148" data-path="images/email-logs/email-preview.png" />
</Frame>

Một số email không có nội dung để hiển thị:

* **Email đăng nhập Customer Portal.** Các email này chứa liên kết đăng nhập còn hiệu lực, vì vậy nội dung không bao giờ được hiển thị.
* **Email bị chặn.** Các email này chưa bao giờ đến được nhà cung cấp, nên không có bản sao.
* **Email cũ hơn 180 ngày.** Nhà cung cấp sẽ xóa nội dung tại thời điểm đó.

## Gửi lại email

Chọn **Resend** trên một hàng để gửi lại cùng email đó. Dodo Payments kết xuất lại email từ sự kiện ban đầu, vì vậy biên lai luôn hiển thị trạng thái hiện tại của khoản thanh toán.

<Frame>
  <img src="https://mintcdn.com/dodopayments/9G2eOufWVa-OvQvG/images/email-logs/resend-email.png?fit=max&auto=format&n=9G2eOufWVa-OvQvG&q=85&s=8751c05df35b14f116c8d487eaae7b70" alt="Điều khiển gửi lại trên một hàng email, với tùy chọn gửi đến địa chỉ khác" style={{ maxHeight: '500px', width: 'auto' }} width="896" height="2104" data-path="images/email-logs/resend-email.png" />
</Frame>

Bảng này giữ địa chỉ ban đầu trong trường **To**. Thay đổi địa chỉ để gửi đến nơi khác. Sau một lỗi vĩnh viễn, bắt buộc phải sử dụng địa chỉ khác vì cùng địa chỉ đó sẽ tiếp tục bị lỗi.

<Warning>
  Gửi lại là một email mới. Email đó xuất hiện dưới dạng một hàng riêng trong tab.
</Warning>

### Giới hạn

* Mỗi email có thể được gửi lại **ba lần**.
* Có thời gian chờ giữa các lần thử: năm phút trước lần gửi lại đầu tiên, mười phút trước lần thứ hai và mười lăm phút trước lần thứ ba.
* Lần gửi chưa bao giờ đến được nhà cung cấp không được tính vào ba lần gửi lại. Tuy nhiên, lần gửi đó vẫn làm tăng thời gian chờ.
* Resend chỉ khả dụng trong dashboard. API chỉ có quyền đọc.

### Khi Resend không khả dụng

| Trường hợp                                       | Lý do                                                                      |
| ------------------------------------------------ | -------------------------------------------------------------------------- |
| Người nhận đã đánh dấu email là spam             | Gửi lại sẽ vi phạm khiếu nại của người nhận.                               |
| Địa chỉ bị chặn                                  | Nhà cung cấp chấp nhận việc gửi rồi loại bỏ email.                         |
| Một lần gửi sau của cùng email đã được thực hiện | Hàng này là lịch sử. Gửi lại sẽ chuyển đến người nhận một bản sao thứ hai. |
| Khách hàng bị chặn                               | Khách hàng bị chặn sẽ không nhận thêm email nào từ bạn.                    |
| Đã sử dụng cả ba lần gửi lại                     | Giới hạn được áp dụng cho từng email.                                      |

<Note>
  Email đăng nhập Customer Portal luôn được gửi đến địa chỉ đã yêu cầu email đó, và mỗi lần gửi lại sẽ tạo một liên kết đăng nhập mới.
</Note>

## Test mode

Test mode gửi email thật, vì vậy có hạn mức: **100 email cho mỗi doanh nghiệp mỗi tuần**. Các lần gửi lại cũng sử dụng cùng hạn mức này.

Khi hạn mức đã được sử dụng hết, các email tiếp theo được ghi nhận là `blocked` và không được gửi. Hàng này hiển thị "Not sent: the test-mode email allowance for this week is spent". Hạn mức được đặt lại mỗi tuần. Live mode không có giới hạn này.

<Info>
  Email đăng nhập Customer Portal không bao giờ được gửi trong test mode và không sử dụng hạn mức.
</Info>

## Đọc email qua API

Danh sách và nội dung cũng khả dụng thông qua API key của bạn, để bạn có thể hiển thị trạng thái phân phối trong các công cụ hỗ trợ của riêng mình.

<CodeGroup>
  ```bash cURL theme={null}
  curl https://live.dodopayments.com/customers/{customer_id}/emails?page_size=10 \
    -H "Authorization: Bearer $DODO_API_KEY"
  ```

  ```typescript Node.js theme={null}
  const res = await fetch(
    `https://live.dodopayments.com/customers/${customerId}/emails?page_size=10`,
    { headers: { Authorization: `Bearer ${process.env.DODO_API_KEY}` } },
  );
  const { items, total_count } = await res.json();
  ```

  ```python Python theme={null}
  import os, requests

  res = requests.get(
      f"https://live.dodopayments.com/customers/{customer_id}/emails",
      params={"page_size": 10},
      headers={"Authorization": f"Bearer {os.environ['DODO_API_KEY']}"},
  )
  items = res.json()["items"]
  ```
</CodeGroup>

Mỗi mục chứa `status`, `failure_code` và `failure_reason` khi lần gửi không thành công, cùng `has_preview` để cho biết nội dung được lưu trữ có tồn tại hay không. Mục này cũng chứa một đối tượng `policies` cho biết bạn có thể làm gì với hàng đó:

| Trường                       | Ý nghĩa                                                                 |
| ---------------------------- | ----------------------------------------------------------------------- |
| `resend_allowed`             | Bạn có thể gửi lại hàng này.                                            |
| `retry_allowed`              | Lần gửi không thành công và bạn có thể thử lại.                         |
| `resends_remaining`          | Số lần gửi lại còn lại của email.                                       |
| `requires_different_address` | Cùng địa chỉ sẽ tiếp tục bị lỗi, vì vậy bạn phải cung cấp địa chỉ khác. |
| `superseded`                 | Một lần gửi sau của cùng email đã thay thế hàng này.                    |

Đọc `policies` thay vì tự xác định khả năng gửi lại. Server áp dụng các quy tắc trên.

<CardGroup cols={2}>
  <Card title="Customer Management" icon="user-group" href="/features/customers">
    Quản lý khách hàng, lịch sử mua hàng và quyền tự phục vụ.
  </Card>

  <Card title="Communication Preferences" icon="bell" href="/features/communication-preferences">
    Chọn các email mà Dodo Payments gửi thay mặt bạn.
  </Card>
</CardGroup>
