Một bản tin được tạo bằng Single Sends và một email đặt lại mật khẩu được gửi qua /v3/mail/send có thể rời khỏi cùng một tài khoản SendGrid nhưng vẫn đến nơi dưới dạng những email khá khác nhau, điều này ảnh hưởng đến kết quả kiểm tra spam. Marketing Campaigns luôn cố gắng thêm các tiêu đề hủy đăng ký, còn API chỉ thêm chúng nếu bạn yêu cầu. Vì vậy, hãy xác định bạn đang kiểm tra loại nào trước khi gửi.
Phía nhận hoạt động giống nhau trong cả hai trường hợp. Email Spam Tester cung cấp cho bạn một địa chỉ tạm thời mà không cần tài khoản. Chỉ email đầu tiên đến trong vòng một giờ được tính và email đó sẽ nhận được báo cáo về xác thực, kết luận của SpamAssassin và Rspamd, nội dung, các quy tắc dành cho người gửi hàng loạt do Gmail và Yahoo đặt ra, cùng kết quả truy vấn 21 danh sách chặn bằng IP gửi của bạn.
Single Sends: nút kiểm thử và tiền tố của nút
Tính năng kiểm thử tích hợp nằm tại Marketing > Single Sends. Mở Single Send, tìm Test Your Email, nhập địa chỉ kiểm thử rồi nhấp vào Send Test Message. SendGrid yêu cầu người gửi và tiêu đề trước khi cho phép bạn kiểm thử. Nếu tiêu đề chứa Handlebars, bạn phải điền Test Data. Khi gửi đi, SendGrid thêm Test - vào đầu tiêu đề.
Để kiểm thử email thực tế, hãy gửi Single Send đến một danh sách. Single Sends được gửi đến danh sách hoặc phân khúc, vì vậy hãy tạo một danh sách chỉ có địa chỉ kiểm thử làm liên hệ duy nhất rồi chọn danh sách đó trong Recipients. Khi đó, các tiêu đề email, liên kết hủy đăng ký và liên kết được theo dõi sẽ giống như những gì người đăng ký nhận được. Nếu bạn cũng thực hiện kiểm thử hộp thư đến, bạn có thể thêm các hộp thư của nhà cung cấp trong kiểm thử đó vào danh sách này.
API và SMTP: một lệnh curl
Rút gọn từ ví dụ bắt đầu sử dụng của SendGrid, với địa chỉ kiểm thử làm người nhận:
curl --request POST \
--url https://api.sendgrid.com/v3/mail/send \
--header 'Authorization: Bearer <<YOUR_API_KEY>>' \
--header 'Content-Type: application/json' \
--data '{"personalizations":[{"to":[{"email":"test-xxxxxxxxxxxxxxxxxxxx@t.email-spam-tester.com"}],"subject":"Hello, World!"}],"content":[{"type":"text/plain","value":"Heya!"}],"from":{"email":"you@yourdomain.com","name":"Your Name"}}'
Khi bật kiểm tra hộp thư, các hộp thư tại nhà cung cấp của bạn được thêm vào cùng mảng to và mã đánh dấu được thêm vào subject, vì vậy một yêu cầu cũng cho bạn biết Gmail, Outlook, Yahoo và các nhà cung cấp khác đưa email vào thư mục nào.
Hãy điền địa chỉ kiểm thử của bạn và địa chỉ From đã được SendGrid xác minh, thông qua xác minh người gửi đơn lẻ hoặc xác thực tên miền. Tốt hơn nữa, hãy gửi đúng thư mà ứng dụng của bạn thực sự gửi, với HTML thực tế, vì các bước kiểm tra nội dung sẽ chấm điểm phần nội dung thư.
Nếu ứng dụng của bạn giao tiếp qua SMTP, không có gì thay đổi ngoài phương thức truyền. Máy chủ là smtp.sendgrid.net, tên người dùng chính xác là chuỗi apikey (không phải khóa của bạn), và SSL chạy trên cổng 465.
Ngoài ra còn có endpoint gửi thử, POST /v3/marketing/test/send_email. Endpoint này nhận tối đa 10 địa chỉ nhưng chỉ hoạt động với Dynamic Transactional Templates, vì vậy với hầu hết thư gửi qua API, lệnh gọi Mail Send thông thường ở trên là phép kiểm thử chính xác nhất.
Tiêu đề hủy đăng ký phụ thuộc vào đường gửi bạn chọn
Marketing Campaigns luôn cố gắng thêm tiêu đề List-Unsubscribe. Thư được gửi qua API hoặc SMTP chỉ có các tiêu đề này khi Subscription Tracking được bật trong Settings > Tracking. Khi đó, SendGrid chèn List-Unsubscribe với một liên kết HTTPS và List-Unsubscribe-Post: List-Unsubscribe=One-Click.
Nếu không bật Subscription Tracking, bạn phải tự thêm các tiêu đề vào yêu cầu:
"headers": {
"List-Unsubscribe-Post": "List-Unsubscribe=One-Click",
"List-Unsubscribe": "<mailto:unsubscribe@yourdomain.com>, <https://yourdomain.com/unsubscribe>"
}
SendGrid yêu cầu cả phần mailto và https, đồng thời cảnh báo không nên hủy đăng ký bất kỳ ai qua một yêu cầu GET thông thường đến liên kết đó. Hãy cẩn thận khi sao chép từ bài viết hỗ trợ của SendGrid về các tiêu đề này. Ví dụ thứ hai trong bài đặt List-Unsubscribe-Post thành các URL, nhưng cách đó không đúng. Giá trị luôn là List-Unsubscribe=One-Click. Trang khắc phục List-Unsubscribe của chúng tôi có phần thông tin còn lại.
Nếu thư là email đặt lại mật khẩu hoặc biên lai và không có tiêu đề danh sách, báo cáo sẽ đánh dấu nhóm quy tắc dành cho người gửi hàng loạt là đã bỏ qua thay vì không đạt. Bản tin được gửi qua API không được bỏ qua theo cách này.
Đọc kết quả xác thực
Trên tài khoản chưa xác thực miền, người nhận sẽ thấy "via sendgrid.net" sau địa chỉ From của bạn. Tài liệu của SendGrid cho biết việc xác thực miền sẽ loại bỏ dòng này. Báo cáo không chỉ kiểm tra dòng đó. Hãy xem các dòng căn chỉnh DKIM và SPF. Nếu chữ ký hoặc đường dẫn trả về thuộc miền của SendGrid thay vì miền của bạn, DMARC không thể đạt đối với địa chỉ From của bạn, và kế hoạch khắc phục sẽ hướng bạn đến việc xác thực miền. Gửi từ địa chỉ gmail.com hoặc yahoo.com còn tệ hơn. Trang DMARC của SendGrid cho biết cả SPF và DKIM đều không đạt đối với các địa chỉ này, và chính bảng điều khiển cũng cảnh báo rằng những thư đó có thể không vượt qua bước kiểm tra DMARC.
Bạn có thể thiết lập xác thực miền trong Settings > Sender Authentication. Khi bật bảo mật tự động, đây là chế độ mặc định, SendGrid cung cấp cho bạn bốn bản ghi:
- một CNAME tại
em[0000], dùng cho SPF và trở thành đường dẫn trả về của bạn; - các CNAME tại
s1._domainkeyvàs2._domainkeycho DKIM; - một TXT tại
_dmarcvớiv=DMARC1; p=none;.
Các giá trị ví dụ. Hãy sao chép giá trị thực từ tài khoản của bạn.
| Tên | Loại | Giá trị | Mục đích | Sao chép |
|---|---|---|---|---|
| Bật bảo mật tự động (mặc định) | ||||
| em[0000] | CNAME | Đích từ tài khoản của bạn | SPF và đường dẫn trả về. | |
| s1. | CNAME | Đích từ tài khoản của bạn | DKIM. | |
| s2. | CNAME | Đích từ tài khoản của bạn | DKIM, bộ chọn thứ hai. | |
| _dmarc | TXT | v= | DMARC. | |
| Tắt bảo mật tự động | ||||
| em[0000] | MX | Máy chủ từ tài khoản của bạn | Đường dẫn trả về. | |
| em[0000] | TXT | v= | SPF, do bạn tự quản lý. | |
| m1. | TXT | Khóa từ tài khoản của bạn | DKIM. | |
Khi tắt bảo mật tự động, bạn nhận được một MX và một SPF TXT (v=spf1 include:sendgrid.net ~all) tại em[0000], cùng với một DKIM TXT tại m1._domainkey, và bạn phải tự quản lý bản ghi SPF. Nếu nhà cung cấp DNS của bạn từ chối tên CNAME có chứa _, đây là lựa chọn duy nhất. Nếu một dịch vụ khác đã sử dụng bộ chọn s, SendGrid cho phép bạn chọn một bộ chọn tùy chỉnh. Hãy kiểm tra kết quả bằng công cụ kiểm tra DKIM (bộ chọn s1) và công cụ kiểm tra SPF. Công cụ SPF cũng đếm số lần tra cứu DNS nếu bản ghi SPF của bạn đang trở nên quá dài.
Liên kết, IP và phần còn lại của báo cáo
Tính năng theo dõi lượt nhấp sẽ viết lại mọi liên kết. Nếu văn bản liên kết cũng là một URL, địa chỉ hiển thị sẽ không còn khớp với đích thực tế và bước kiểm tra liên kết không khớp trong báo cáo sẽ gắn cờ liên kết đó. Trang về khả năng gửi email của SendGrid cũng nêu vấn đề này. Hãy dùng từ ngữ làm văn bản liên kết hoặc thiết lập nhận diện thương hiệu cho liên kết để các liên kết được theo dõi đi qua miền của bạn. Miền này phải khớp với miền From.
Các gói Trial và Essentials gửi từ nhóm IP dùng chung. SendGrid lưu ý rằng các IP này có thể thay đổi mà không báo trước nếu uy tín của bạn thay đổi, vì vậy việc một IP trong nhóm bị đưa vào danh sách chặn sẽ ảnh hưởng đến tất cả người dùng trong nhóm đó. Công cụ kiểm tra danh sách chặn cho phép bạn kiểm tra lại IP sau này. Bạn chỉ có thể cấu hình DNS ngược khi dùng IP chuyên dụng, có trong Pro Email API và Advanced Marketing Campaigns.
Đọc thêm trong tài liệu của SendGrid
Kiểm thử emailwww.twilio.com ↗Xác thực miềnwww.twilio.com ↗List-Unsubscribewww.twilio.com ↗Nhận diện thương hiệu cho liên kếtwww.twilio.com ↗Câu hỏi
Tại sao email của tôi hiển thị "via sendgrid.net"?
SendGrid chưa xác thực miền gửi của bạn. Hãy thiết lập xác thực miền trong Settings > Sender Authentication. Theo tài liệu của SendGrid, nhãn này sẽ biến mất sau đó.
Báo cáo cho biết thiếu List-Unsubscribe, nhưng tôi dùng SendGrid. Tại sao?
Có thể bạn gửi qua API hoặc SMTP khi Subscription Tracking đang tắt. Hãy bật tính năng này trong Settings > Tracking hoặc tự thêm cả hai tiêu đề vào đối tượng headers.
Tôi có thể dùng "Send Test Message" của SendGrid cho việc này không?
Có, email sẽ đến địa chỉ kiểm thử. Chỉ cần lưu ý rằng dòng chủ đề sẽ có thêm Test - ở đầu. Nếu muốn kiểm tra các tiêu đề giống hệt email mà người đăng ký nhận được, Single Send đến danh sách có một liên hệ sẽ sát thực tế hơn.
Tôi có thể dùng endpoint API gửi thử thay cho Mail Send không?
Chỉ dùng được cho Dynamic Transactional Templates, vì /v3/marketing/test/send_email chỉ chấp nhận loại này. Endpoint này nhận tối đa 10 địa chỉ. Mọi trường hợp khác đều đi qua /v3/mail/send.
Tôi cần nhập selector nào vào công cụ kiểm tra DKIM?
Khi bật bảo mật tự động, hãy kiểm tra s1 và s2. Khi tắt, selector là m1. Nếu bạn đã chọn selector tùy chỉnh trong lúc thiết lập, hãy dùng selector đó.