> For the complete documentation index, see [llms.txt](https://docs.abot.vn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.abot.vn/channels/email/cau-hinh-email-gui/cau-hinh-amazon-ses.md).

# Cấu hình gửi mail qua Amazon SES

**Amazon Simple Email Service (Amazon SES)** là dịch vụ gửi email đám mây của AWS với chi phí tiết kiệm nhất hiện nay, tốc độ gửi cao và khả năng vào hộp thư chính (Inbox) tối ưu.

Tài liệu này hướng dẫn bạn từng bước thiết lập Amazon SES từ AWS Console và cấu hình chuẩn xác vào hệ thống **ABOT 7.x**.

***

## 1. Chuẩn bị trên AWS Console (Amazon Web Services)

### Bước 1: Xác thực Tên miền (Domain Verification)

1. Đăng nhập vào [AWS Management Console](https://console.aws.amazon.com/) ➡️ Chọn vùng dịch vụ (**Region**) gần bạn (ví dụ: `ap-southeast-1` - Singapore hoặc `us-east-1` - N. Virginia).
2. Tìm kiếm dịch vụ **Amazon Simple Email Service (SES)**.
3. Ở menu bên trái, chọn **Configuration** ➡️ **Identities** ➡️ Bấm **Create identity**.
4. Chọn **Identity type** là **Domain**:
   * Nhập tên miền của bạn (ví dụ: `nc-net.vn` hoặc `abot.vn`).
   * Tích chọn **Easy DKIM** (khuyên dùng).
   * Bấm **Create identity**.
5. AWS sẽ cung cấp cho bạn 3 bản ghi **CNAME** cho DKIM. Hãy đăng nhập trang quản lý DNS của tên miền (Cloudflare, iNET, MatBao,...) và thêm 3 bản ghi CNAME này vào.
6. Sau vài phút, trạng thái Identity status sẽ chuyển sang màu xanh: **Verified**.

***

### Bước 2: Tạo thông tin xác thực SMTP (SMTP Credentials)

1. Trong giao diện Amazon SES, menu bên trái chọn **Account dashboard**.
2. Tìm mục **Simple Mail Transfer Protocol (SMTP) settings**:
   * Ghi lại **SMTP endpoint** (ví dụ: `email-smtp.ap-southeast-1.amazonaws.com`).
   * Ghi lại cổng: `587` (TLS) hoặc `465` (SSL).
3. Bấm nút **Create SMTP credentials**.
4. AWS sẽ yêu cầu tạo IAM User cho SMTP, giữ tên mặc định và bấm **Create user**.
5. **QUAN TRỌNG:** Lưu lại **SMTP Username** và **SMTP Password** (chỉ hiển thị một lần duy nhất).

***

### Bước 3: Yêu cầu nâng hạn mức khỏi chế độ Sandbox (Production Access)

* Mặc định tài khoản AWS SES mới tạo sẽ nằm trong chế độ **Sandbox** (chỉ gửi được đến các email đã xác thực trước).
* Vào mục **Account dashboard** ➡️ Bấm **Request production access**:
  * Mô tả mục đích sử dụng: Gửi email tin tức, thông báo đơn hàng và chăm sóc khách hàng opt-in từ website.
  * AWS thường phê duyệt nâng hạn mức gửi thực tế (50.000 mail/ngày) trong vòng 12 - 24 giờ.

***

## 2. Cấu hình Amazon SES vào phần mềm ABOT

### Cấu hình trên giao diện quản trị ABOT:

1. Đăng nhập vào trang quản trị ABOT ➡️ Bấm biểu tượng **Bánh răng (Cài đặt)** ở góc trên bên phải ➡️ Chọn **Configuration (Cấu hình)**.
2. Tại menu bên trái, chọn **Email Settings (Cài đặt email)**.
3. Điền các thông số:
   * **Name to send mail as (Tên người gửi):** Tên thương hiệu của bạn (ví dụ: `ABOT Support`).
   * **E-mail address to send mail as (Email gửi):** Địa chỉ email thuộc tên miền đã Verify trên AWS SES (ví dụ: `support@nc-net.vn`).
   * **Service to send mail through (Dịch vụ gửi mail):** Chọn **Amazon SES - SMTP** (hoặc **Other SMTP Server**).
   * **SMTP host:** `email-smtp.<region>.amazonaws.com` (ví dụ: `email-smtp.ap-southeast-1.amazonaws.com`).
   * **SMTP port:** `587`.
   * **SMTP encryption type:** Chọn **TLS** (hoặc **STARTTLS**).
   * **SMTP authentication mode:** Chọn **Login**.
   * **SMTP username:** Điền chuỗi SMTP Username bạn đã lưu ở Bước 2.
   * **SMTP password:** Điền chuỗi SMTP Password bạn đã lưu ở Bước 2.
4. Bấm nút **Test connection (Kiểm tra kết nối)**:
   * Nếu hiện thông báo màu xanh `Success! Connection test was successful.`, nghĩa là kết nối SMTP thành công.
5. Bấm **Send test email** để gửi một email thử nghiệm đến hòm thư cá nhân của bạn.
6. Bấm **Save & Close (Lưu & Đóng)**.

***

## 3. Cấu hình Mailer DSN trên ABOT 7.x (Dành cho Quản trị viên Kỹ thuật)

Trên phiên bản **ABOT 7.x (Symfony 7 / PHP 8.4)**, hệ thống sử dụng thư viện **Symfony Mailer** tiêu chuẩn. File cấu hình `config/local.php` sẽ lưu chuỗi DSN như sau:

```php
'mailer_dsn' => 'ses+smtp://YOUR_SMTP_USERNAME:YOUR_SMTP_PASSWORD@email-smtp.ap-southeast-1.amazonaws.com:587',
```

> **Lưu ý kỹ thuật:**\
> Nếu chuỗi `SMTP_PASSWORD` chứa các ký tự đặc biệt (như `/`, `+`, `=`), hệ thống ABOT 7.x đã tự động URL-encode mật khẩu để tránh lỗi `Unknown DSN scheme`.

***

## 4. Kiểm tra và Xử lý sự cố thường gặp

* **Lỗi 554 Message rejected: Email address is not verified:**\
  Tài khoản AWS SES của bạn vẫn đang ở chế độ **Sandbox** hoặc địa chỉ `E-mail address to send mail as` chưa được Verify trên AWS. Hãy kiểm tra lại mục Identities trên AWS Console hoặc gửi đơn xin Production Access.
* **Lỗi Connection timeout / Could not connect to host:**\
  Kiểm tra xem máy chủ hosting/VPS có bị nhà cung cấp chặn mở cổng `587` ra ngoài hay không. Nếu bị chặn, thử đổi sang cổng `465` (kèm SSL) hoặc cổng `2587`.
