Gửi email tự động bằng n8n đúng quy định
Email xác nhận đăng ký, thư cảm ơn, bản tin ưu đãi: n8n gửi được hết, nhưng mỗi loại thư có luật riêng. Bài viết đi từng bước từ tạo credential, dựng workflow, đến đặt các chốt chặn theo Nghị định 91/2020 và quy định người gửi của Google. Đối chiếu tài liệu n8n bản 2.44.4, kiểm tra tháng 10/2026.
Thư gửi tay thì sót, thư gửi hàng loạt thì vào spam
Một trung tâm đào tạo gửi thư xác nhận đăng ký bằng tay, cuối tuần không ai trực nên khách đợi hai ngày. Tháng sau, cả đội gửi một lượt thư ưu đãi cho mọi địa chỉ, kể cả người chưa từng đồng ý nhận: hộp thư bị báo đạt giới hạn gửi, vài khách phản ánh bị làm phiền. (Tình huống minh hoạ.)
Gửi email tự động bằng n8n giải quyết được cả hai việc, với điều kiện bạn tách rõ thư giao dịch (xác nhận, nhắc lịch, trả lời yêu cầu của khách) và thư quảng cáo (ưu đãi, bản tin bán hàng), rồi đặt chốt chặn cho loại thứ hai. Chưa quen workflow, đọc trước n8n cho người mới.
Gửi email tự động bằng n8n gồm những gì?
Gửi email tự động bằng n8n là dựng workflow nhận một sự kiện (khách đăng ký, đến lịch, có đơn mới), lấy dữ liệu khách, kiểm tra điều kiện được phép gửi rồi gửi thư qua Gmail node hoặc Send Email (SMTP), và ghi lại đã gửi gì, lúc nào.
- Sự kiệnForm, Webhook, Schedule Trigger, đơn mới
- Chuẩn hoá dữ liệuEdit Fields: tên, email, mã khách
- Chốt chặnIf: email hợp lệ? đồng ý? chưa từ chối?
- GửiGmail hoặc Send Email, đã tắt dòng chữ ký n8n
- Ghi nhật kýData table hoặc Google Sheets: đã gửi lúc nào
Chọn Gmail node hay Send Email (SMTP)
| Gmail node | Send Email (SMTP) | |
|---|---|---|
| Kết nối | Credential Google: OAuth2 (khuyên dùng) hoặc Service Account | Credential SMTP: máy chủ, cổng, tài khoản, mật khẩu hoặc app password |
| Thao tác chính | Message: Send, Reply, Get, Get Many, Add/Remove Label…; Draft; Thread; Send and Wait | Send; Send and Wait for Response (Approval, Free Text, Custom Form) |
| Tuỳ chọn khi gửi | Sender Name, Send Replies To, CC, BCC, Attachments, Append n8n attribution | Reply To, CC, BCC, Attachments, Email Format (Text, HTML, Both), Append n8n Attribution |
| Lưu ý | Tự cài n8n với ứng dụng OAuth ở trạng thái Testing: refresh token hết hạn sau 7 ngày | Tài liệu ghi node không đặt được header như In-Reply-To, References |
Số thư được gửi mỗi ngày do nhà cung cấp hộp thư quyết định, n8n không nới được:
- Gmail cá nhân: báo lỗi "You have reached a limit for sending mail" khi gửi tới hơn 500 người nhận trong một thư và/hoặc hơn 500 thư mỗi ngày; gửi lại được sau 1–24 giờ.
- Google Workspace: 2.000 thư mỗi ngày cho mỗi người dùng (1.500 với trộn thư, 500 với tài khoản dùng thử); dịch vụ SMTP relay có giới hạn riêng.
Gmail cá nhân hợp với thư giao dịch số lượng nhỏ; bản tin gửi nhiều người nên đi qua tên miền riêng hoặc dịch vụ gửi email.
Nguồn: Gmail node – Message · Send Email node · Google credentials · Google OAuth 2.0 – Testing 7 ngày · Giới hạn Gmail · Giới hạn Workspace
Bước 1. Tạo credential gửi thư
Cách A – Gmail node. Trong n8n, thêm node Gmail, ở ô Credential chọn tạo mới và đăng nhập bằng OAuth2. Trên n8n Cloud, một số node Google có Managed OAuth2. Nếu tự cài n8n và tự tạo ứng dụng OAuth trong Google Cloud, hãy chuyển ứng dụng khỏi trạng thái Testing: theo Google, ứng dụng loại External ở trạng thái này cấp refresh token chỉ sống 7 ngày, sau đó workflow lỗi xác thực.
Cách B – Send Email (SMTP). Với Gmail qua SMTP, tài liệu n8n hướng dẫn bật xác minh hai bước (2-Step Verification), tạo App password rồi điền như mẫu dưới. Cổng 465 đi cùng công tắc SSL/TLS bật; cổng 587 thì tắt công tắc để dùng STARTTLS; cổng 25 không mã hoá, không nên dùng.
Host: smtp.gmail.com # hoặc máy chủ SMTP của tên miền riêng
Port: 465 # 465 = bật SSL/TLS; 587 = tắt SSL/TLS (dùng STARTTLS)
SSL/TLS: bật
User: <địa chỉ email gửi>
Password: <app password, nhập thẳng vào ô này trong n8n>Nguồn: Google credentials · Google OAuth 2.0 · SMTP credentials · Gmail qua SMTP
Bước 2. Workflow thư xác nhận đăng ký
Thư giao dịch trả lời đúng việc khách vừa yêu cầu. Dựng theo thứ tự:
- Trigger: Webhook nhận dữ liệu form website, hoặc n8n Form Trigger nếu chưa có website (cách nối form: Đưa form website về bảng khách hàng).
- Edit Fields (Set): tạo các trường
ten,email,chuong_trinh,thoi_diem; xoá khoảng trắng thừa ở email. - If: điều kiện String "matches regex" hoặc "is not empty" cho email; không hợp lệ thì rẽ sang nhánh báo người phụ trách thay vì gửi.
- Gmail (Message → Send) hoặc Send Email (Send): điền To, Subject, nội dung theo mẫu dưới; mở Options, tắt Append n8n Attribution, đặt Sender Name hoặc Reply To là hộp thư có người đọc.
- Data Table (Row → Upsert) hoặc Google Sheets (Append or Update Row): ghi đã gửi thư xác nhận lúc nào, để không gửi trùng khi khách bấm gửi form hai lần.
Tiêu đề: Đã nhận đăng ký của {{ $json.ten }}
Nội dung:
Chào {{ $json.ten }},
<Tên doanh nghiệp> đã nhận đăng ký "{{ $json.chuong_trinh }}" của bạn lúc {{ $json.thoi_diem }}.
Tư vấn viên sẽ liên hệ trong giờ làm việc.
Cần đổi thông tin, bạn chỉ cần trả lời thư này.Phần trong {{ }} là biểu thức n8n, lấy giá trị từ node trước. Chạy thử với email của bạn trước khi publish.
Nguồn: Webhook · If node · Gmail – Send · Send Email · Data Table node
Bước 3. Bảng khách có cột đồng ý và từ chối
Bảng khách phải trả lời được: khách đã đồng ý chưa, lúc nào, bằng cách nào, đã từ chối chưa. Thêm các cột sau vào Data table của n8n hoặc bảng tính (xem Google Sheets làm CRM):
ma_khach # mã ngẫu nhiên, dùng trong link từ chối thay cho email
ten
email
dong_y_quang_cao # co / trống
ngay_dong_y # thời điểm khách đồng ý
cach_dong_y # vd: form website, tích ô đồng ý
tu_choi # thời điểm từ chối; có giá trị là không bao giờ gửi quảng cáo nữa
lan_gui_qc_cuoi # thời điểm gửi thư quảng cáo gần nhấtNghị định 91/2020 yêu cầu người quảng cáo kiểm tra được sự đồng ý rõ ràng và lưu thông tin đăng ký, từ chối tối thiểu 01 năm. Đừng xoá dòng của khách đã từ chối: dòng đó giúp workflow biết không gửi lại. Data table mặc định ai trong cùng project cũng xem được, nên chỉ cho người cần thiết vào project đó.
Nguồn: Nghị định 91/2020 – Điều 11 · n8n – Data tables
Bước 4. Workflow thư quảng cáo có người duyệt
- Schedule Trigger chạy một lần mỗi ngày trong giờ làm việc (đặt múi giờ
Asia/Ho_Chi_Minh; tự cài thì đặtGENERIC_TIMEZONE). - Data Table (Row → Get) hoặc Google Sheets (Get Row(s)) lấy khách có
dong_y_quang_cao= co vàtu_choitrống. - If:
lan_gui_qc_cuoitrống hoặc trước thời điểm hiện tại hơn 24 giờ (kiểu Date & Time, phép so "is before"). Tối đa một thư mỗi ngày thì luôn dưới mức 3 thư/24 giờ. - Telegram (thao tác Send and Wait for Response, kiểu Approval) hoặc Gmail (thao tác Send and Wait for Approval): gửi người quản lý tiêu đề, nội dung, số người nhận; bấm duyệt mới đi tiếp. Với Telegram, đặt thêm Limit Wait Time để workflow không chờ mãi.
- Loop Over Items chia lô nhỏ, mỗi lô thêm Wait vài giây để giãn nhịp.
- Gửi theo mẫu dưới, rồi cập nhật
lan_gui_qc_cuoicủa từng khách.
Tiêu đề: [QC] <nội dung ưu đãi, khớp với thân thư>
Nội dung:
Chào {{ $json.ten }},
<nội dung ưu đãi>
Người gửi: <tên doanh nghiệp> · <số điện thoại> · <email> · <địa chỉ> · <website>
Bạn nhận thư này vì đã đồng ý nhận tin ưu đãi ngày {{ $json.ngay_dong_y }}.
Từ chối nhận thư: <địa chỉ trang từ chối>?ma={{ $json.ma_khach }}
Hoặc trả lời thư này với chữ "TỪ CHỐI", hoặc gọi <số điện thoại>.Link từ chối dùng ma_khach ngẫu nhiên, không đặt email hay số điện thoại vào đường link.
Nguồn: Schedule Trigger · If – Date & Time · Send and Wait for Response · Xử lý giới hạn tốc độ · Nghị định 91/2020 – Điều 13, 17–20
Bước 5. Nhận yêu cầu từ chối và dừng ngay
- Tạo workflow mới bắt đầu bằng Webhook, HTTP method GET, Respond = "Using 'Respond to Webhook' Node". Đường dẫn production của webhook là
<địa chỉ trang từ chối>trong mẫu thư. - Data Table (Row → Update), điều kiện
ma_khachEquals giá trịmatrên link; ghi thời điểm vàotu_choi. - Respond to Webhook: Respond With = Text hoặc Redirect tới trang "Bạn đã từ chối nhận thư".
- Gửi một thư xác nhận không chứa quảng cáo, rồi ngừng gửi (Nghị định 91/2020).
- Khách từ chối qua email hay điện thoại: người nhận cập nhật cột
tu_choitrong ngày.
Huỷ đăng ký một chạm: gửi trên 5.000 thư mỗi ngày tới Gmail thì thư quảng cáo cần hai header List-Unsubscribe và List-Unsubscribe-Post: List-Unsubscribe=One-Click. Node Send Email không đặt được header tự chọn, nên ở quy mô này hãy để n8n gọi dịch vụ gửi email có hỗ trợ sẵn qua HTTP Request.
Nguồn: Webhook · Respond to Webhook · Data Table – Rows · Google – one-click unsubscribe · Nghị định 91/2020 – Điều 20
An toàn và chính sách cần nhớ
| Quy định | Nội dung chính | Làm trong n8n |
|---|---|---|
| Nghị định 91/2020 – đồng ý trước | Chỉ gửi thư quảng cáo khi người nhận đã đồng ý trước; lưu đăng ký, từ chối tối thiểu 1 năm | Cột đồng ý, cách đồng ý, ngày; không xoá dòng đã từ chối |
| Nghị định 91/2020 – tần suất | Không quá 3 thư quảng cáo tới một địa chỉ trong 24 giờ, trừ khi có thoả thuận khác | Mỗi người tối đa 1 thư/ngày, If kiểm tra lần gửi cuối |
| Nghị định 91/2020 – hình thức | Nhãn [QC] hoặc [AD] ở đầu tiêu đề; tiêu đề khớp nội dung; thông tin người gửi đặt trước phần từ chối ở cuối thư | Mẫu thư cố định, người duyệt xem trước |
| Nghị định 91/2020 – từ chối | Dừng ngay khi nhận yêu cầu; gửi xác nhận một lần, không quảng cáo | Workflow từ chối ở Bước 5 |
| Luật 91/2025/QH15 | Đồng ý phải tự nguyện, biết rõ mục đích; im lặng không phải là đồng ý; khách có quyền rút lại | Không tự đánh dấu "đồng ý" cho khách không trả lời |
| Mọi người gửi: SPF hoặc DKIM, TLS, tỷ lệ báo spam dưới 0,3%; trên 5.000 thư/ngày thêm DMARC, huỷ đăng ký một chạm | Cấu hình DNS tên miền gửi; theo dõi tỷ lệ spam |
Khung giờ 7:00–22:00 ở Điều 13 Nghị định 91/2020 áp dụng cho tin nhắn quảng cáo (gọi điện 8:00–17:00); nghị định không đặt khung giờ cho email. Gửi email trong 7:00–22:00 chỉ là khuyến nghị nên làm, không phải quy định bắt buộc. Bộ Công an đang lấy ý kiến dự thảo nghị định mới về chống tin nhắn, thư điện tử, cuộc gọi rác (tin ngày 09/09/2026); hãy kiểm tra văn bản đang có hiệu lực trước khi chạy chiến dịch. Bài viết không phải tư vấn pháp lý.
Tổng hợp quy định theo từng kênh Messenger, Zalo OA, SMS, email: Bám đuổi khách đúng chính sách.
Nguồn: Nghị định 91/2020/NĐ-CP · Luật 91/2025/QH15 · Google sender guidelines · Chính phủ – dự thảo nghị định chống tin rác
Kiểm tra đã chạy đúng
- Gửi thử tới hộp thư của bạn: tiêu đề, tên khách, link hiển thị đúng; không còn dòng chữ ký n8n.
- Gửi form hai lần với cùng email: chỉ nhận một thư xác nhận.
- Khách chưa đồng ý hoặc đã từ chối không xuất hiện trong danh sách chờ duyệt.
- Bấm link từ chối: cột
tu_choicó thời điểm, nhận đúng một thư xác nhận không quảng cáo. - Bấm từ chối ở bước người duyệt thì không thư quảng cáo nào đi.
- Sau 7 ngày, tab Executions không có lỗi xác thực Gmail.
Lỗi thường gặp
| Hiện tượng | Nguyên nhân thường gặp | Cách xử lý |
|---|---|---|
| Gmail node lỗi xác thực sau khoảng một tuần | Ứng dụng OAuth tự tạo còn ở trạng thái Testing | Publish ứng dụng OAuth trong Google Cloud, kết nối lại credential |
| SMTP báo sai tài khoản hoặc kết nối bị ngắt | Dùng mật khẩu thường thay app password; cổng và công tắc SSL/TLS không khớp | Tạo app password; 465 bật SSL/TLS, 587 tắt |
| "You have reached a limit for sending mail" | Vượt giới hạn gửi của Gmail | Giảm số thư, chờ 1–24 giờ, chuyển bản tin sang tên miền riêng hoặc dịch vụ gửi email |
| Thư vào thư mục spam | Tên miền chưa có SPF, DKIM; nhiều người báo spam | Cấu hình DNS, chỉ gửi cho người đã đồng ý, giữ link từ chối dễ thấy |
| Link từ chối báo lỗi 404 | Dùng Test URL hoặc workflow chưa publish | Publish workflow, dùng Production URL |
Nguồn: Google OAuth 2.0 · SMTP credentials · Giới hạn Gmail · Google sender guidelines · Webhook – Test và Production URL
Bắt đầu từ đâu?
- Hôm nay: tạo credential và workflow thư xác nhận đăng ký (Bước 1–2), chạy thử với email của bạn.
- Tuần này: thêm cột đồng ý, từ chối vào bảng khách và dựng workflow từ chối (Bước 3, 5) trước khi gửi thư quảng cáo nào.
- Sau đó: bật workflow thư quảng cáo có người duyệt; kết hợp nhắc lịch theo mốc ở Nhắc lịch và chăm sóc khách theo mốc và báo lỗi qua bot Telegram.
Đọc tiếp: Nhắc lịch, chăm sóc theo mốc →
Câu hỏi thường gặp
Nên dùng Gmail node hay Send Email (SMTP) trong n8n?
Gmail node hợp khi bạn dùng tài khoản Google và cần các thao tác như trả lời đúng luồng thư, gắn nhãn, đọc thư. Send Email hợp với mọi hộp thư có SMTP, kể cả máy chủ thư của tên miền riêng. Cả hai đều có thao tác gửi rồi chờ người duyệt. Giới hạn số thư mỗi ngày do nhà cung cấp hộp thư đặt, không phải do n8n.
Gửi email cảm ơn sau khi khách đăng ký có phải xin đồng ý nhận quảng cáo không?
Thư xác nhận đúng việc khách vừa yêu cầu không phải là thư quảng cáo. Nếu trong thư có giới thiệu sản phẩm, ưu đãi thì phần đó là quảng cáo và phải theo Nghị định 91/2020: có sự đồng ý trước, nhãn [QC] hoặc [AD] ở đầu tiêu đề, phần từ chối ở cuối thư. Bài viết không phải tư vấn pháp lý; trường hợp chưa rõ nên hỏi luật sư.
Danh sách email mua lại có dùng để gửi tự động được không?
Không nên. Nghị định 91/2020 coi thư quảng cáo gửi khi chưa có sự đồng ý trước là thư rác, và người quảng cáo phải kiểm tra được sự đồng ý đó. Luật Bảo vệ dữ liệu cá nhân 91/2025/QH15 ghi rõ im lặng hoặc không phản hồi không được coi là đồng ý.
Vì sao thư gửi từ n8n có dòng "This email was sent automatically with n8n"?
Cả Send Email và Gmail node đều mặc định gắn dòng này. Tắt bằng tuỳ chọn Append n8n Attribution trong node.
Gửi trên 5.000 thư mỗi ngày tới Gmail thì cần gì thêm?
Theo hướng dẫn người gửi của Google: thêm DMARC và thư quảng cáo phải hỗ trợ huỷ đăng ký một chạm bằng hai header List-Unsubscribe và List-Unsubscribe-Post, kèm link huỷ rõ ràng trong thân thư. Tài liệu node Send Email của n8n không có tuỳ chọn thêm header tự đặt, nên ở quy mô này hãy dùng dịch vụ gửi email có hỗ trợ sẵn và để n8n gọi dịch vụ đó qua HTTP Request.
Tài liệu liên quan
- n8n · AI Agentn8n là gì? Tự động hoá quy trình kết hợp AI cho doanh nghiệpn8n là gì: công cụ tự động hoá quy trình nối Facebook, Google Sheets, Telegram, CRM thành workflow, chèn được bước AI. Cloud hay tự cài, giấy phép, giới hạn.
- n8n · AI AgentLàm chatbot Facebook Messenger bằng n8n: webhook, chữ ký, Send API, cửa sổ 24 giờLàm chatbot Facebook Messenger bằng n8n: xác minh webhook, kiểm chữ ký X-Hub-Signature-256, trả 200 trong 5 giây, gửi qua Send API, cửa sổ 24 giờ, App Review.
- n8n · AI Agentn8n Cloud hay tự cài: chi phí, gói và giấy phép cần biếtn8n Cloud hay tự cài: bảng gói Cloud bằng EUR theo lượt chạy, bản Community miễn phí và chi phí thật khi tự cài, giấy phép fair-code, chọn theo 5 tình huống.
- n8n · AI AgentKết nối Zalo OA với n8n: webhook 2 giây, token 25 giờ, tin Tư vấn miễn phí 48 giờKết nối Zalo OA với n8n từng bước: webhook trả 200 trong 2 giây, làm mới access token 25 giờ, gửi tin Tư vấn qua API, khung 48 giờ miễn phí và giới hạn 7 ngày.
Xem tất cả tài liệu hướng dẫn →
Đăng ký tư vấn 1:1
Chuyên gia Aduca cùng bạn xem quy trình hiện tại, chọn việc nên giao cho AI Agent trước và cách kiểm soát rủi ro.
Nguồn tham khảo
- n8n Docs – Send Email node
- n8n Docs – Send Email (SMTP) credentials
- n8n Docs – Dùng Gmail qua SMTP
- n8n Docs – Gmail node, thao tác Message
- n8n Docs – Google credentials
- Google – OAuth 2.0, refresh token khi ứng dụng ở trạng thái Testing
- Gmail Help – Giới hạn gửi của Gmail
- Google Workspace Admin Help – Giới hạn gửi của Gmail trong Workspace
- Google Workspace Admin Help – Hướng dẫn cho người gửi email
- Công báo Chính phủ – Nghị định 91/2020/NĐ-CP
- Bộ Công an – Luật Bảo vệ dữ liệu cá nhân có hiệu lực từ 01/01/2026
Lịch sử cập nhật
- 21/10/2026 — Bản đầu.
Miễn trừ trách nhiệm
Bài viết thuộc chuỗi kiến thức của Công ty Cổ phần Giáo dục Aduca, chia sẻ miễn phí cho mục đích học tập. Thông tin kỹ thuật đối chiếu với tài liệu chính thức của các dự án và nền tảng tại ngày cập nhật (có ghi nguồn); phần nhận định là quan điểm của Aduca. OpenClaw, Hermes Agent, Claude (thương hiệu của Anthropic), ChatGPT (thương hiệu của OpenAI), n8n (thương hiệu của n8n GmbH), các phần mềm chạy model và các model AI mở (Ollama, LM Studio, Qwen, Gemma, gpt-oss…), Obsidian, Notion, phương pháp Building a Second Brain (Tiago Forte) cùng các phần mềm, dịch vụ nêu trong bài thuộc về chủ sở hữu tương ứng, không thuộc Aduca; Aduca không phải đối tác chính thức của các công ty này. Tính năng, gói và giá có thể thay đổi bất cứ lúc nào – hãy kiểm tra trang chính thức trước khi mua. Kết quả áp dụng phụ thuộc quy trình, dữ liệu và con người của từng doanh nghiệp; bài viết không cam kết doanh thu hay hiệu quả cụ thể. © 2026 Aduca — được trích dẫn khi ghi rõ nguồn aduca.vn.