Cách sửa lỗi không gửi được email trong WordPress

Một trong những câu hỏi thường gặp nhất về WordPress là làm thế nào để khắc phục khi không gửi email.

Nhiều bạn mới bắt đầu với WordPress hỏi tại sao plugin tạo form liên hệ (vd Contact Form 7) không gửi email hoặc tại sao không thấy email thông báo gửi từ website WordPress.

Bài viết này sẽ hướng dẫn bạn cách khắc phục sự cố khi không gửi được email trong WordPress.

Tại sao bạn không nhận được email từ trang web WordPress của mình?

Lý do phổ biến nhất của việc thiếu email là máy chủ WordPress của bạn không được định cấu hình đúng cách để sử dụng hàm mail() của PHP.

Nhiều nhà cung cấp dịch vụ email, chẳng hạn như Gmail, sử dụng các công cụ khác nhau để giảm spam email, ngay cả khi hosting của bạn được cấu hình để sử dụng hàm gửi mail.

Những công cụ này cố gắng nhận ra rằng email thực sự được gửi từ nơi đã gửi chứ không phải từ 1 bên giả mạo.

Email được gửi từ các trang web WordPress thường không đạt yêu cầu kiểm tra này.

Điều này có nghĩa là các email được gửi từ các trang web WordPress (plugin tạo form liên hệ, thông báo quản trị admin, v.v.) có thể không nằm trong inbox hoặc thậm chí là thư mục spam của người nhận.

Vì lý do này, chúng tôi khuyên bạn không nên sử dụng WordPress để gửi bản tin qua email.

Đây cũng là lý do tại sao chúng tôi khuyên mọi người nên sử dụng SMTP để gửi email trong WordPress.

SMTP là gì?

SMTP (Simple Mail Transfer Protocol – Giao thức truyền thư đơn giản) là một tiêu chuẩn công nghiệp để gửi email.

Không giống như hàm mail() của PHP, SMTP áp dụng phương thức xác thực chuẩn chỉnh, dẫn đến khả năng gửi email cao hơn.

WordPress có plugin WP Mail SMTP để cấu hình website của bạn gửi email bằng SMTP thay vì dùng hàm mail() của PHP.

Bạn có thể sử dụng nó để kết nối với các dịch vụ SMTP phổ biến như: SendinBlue, Gmail (GSuite), Office365 và Amazon SES.

Riêng đối với VoThanhDuy.Com thì mình vẫn đang dùng SMTP của Gmail (miễn phí) vì nhu cầu gửi email chưa nhiều.

Cài đặt plugin WP Mail SMTP

Cho dù bạn chọn dịch vụ SMTP nào, bạn sẽ cần phải cài đặt plugin WP Mail SMTP trên trang web của mình. Điều này sẽ cho phép WordPress chuyển từ sử dụng hàm mail() tích hợp trong PHP sang sử dụng dịch vụ SMTP.

Đầu tiên, hãy cài đặt và kích hoạt plugin WP Mail SMTP. Nếu bạn không biết cách thực hiện, hãy xem hướng dẫn từng bước của mình để cài đặt plugin WordPress.

Sau đó nhấp vào WP Mail SMTP trong trang quản trị admin WordPress để cấu hình cài đặt plugin.

Đầu tiên, bạn cần nhập tên và địa chỉ emai để trang web gửi email đến. Đảm bảo rằng bạn đang sử dụng cùng một địa chỉ e-mail mà bạn sử dụng cho dịch vụ thư SMTP của mình tại đây.

Bạn có thể đặt email của mình để sử dụng tên và địa chỉ email này ngay cả khi các plugin khác (như WPForms) có cài đặt khác. WP Mail SMTP ghi đè cài đặt của các plugin khác.

Tiếp theo, bạn cần chọn một dịch vụ thư SMTP cho trang web của mình.

Trong hướng dẫn này, chúng tôi sẽ thiết lập SMTP với Sendinblue. Nếu bạn sử dụng Gmail hoặc Office365, bạn cũng sẽ tìm thấy hướng dẫn cho việc đó ở phần sau của bài viết này.

Để hoàn tất thiết lập WP Mail SMTP, bạn cần tạo một tài khoản với Sendinblue. Chuyển sang phần tiếp theo và quay lại để hoàn tất thiết lập WP Mail SMTP.

Gửi email WordPress bằng Sendinblue

Sendinblue là một nhà cung cấp dịch vụ email phổ biến. Gửi hàng loạt email với khả năng gửi cao.

Sendinblue cho phép bạn gửi tới 300 email miễn phí mỗi ngày. Điều này là quá đủ cho hầu hết các trang web nhỏ.

Đây có thể là email từ form liên hệ, thông tài khoản người dùng mới, email đặt lại mật khẩu hoặc bất kỳ email nào khác được gửi từ trang web WordPress của bạn.

Đầu tiên, bạn cần truy cập trang web Sendinblue và tạo một tài khoản. Nhấp vào nút “Sign up free” để thiết lập tài khoản của bạn.

Sau khi tạo tài khoản, bạn sẽ được đưa đến trang tổng quan Sendinblue. Nếu bạn chưa hoàn thành hồ sơ của mình trong giai đoạn thiết lập, bạn sẽ được nhắc làm ngay và luôn.

Còn một bước nữa trên trang web trước khi tiếp tục thiết lập Sendinblue.

Thiết lập subdomain cho trang web của bạn

Trước tiên, bạn cần thiết lập subdomain của mình. Mình khuyên bạn nên sử dụng tên miền ví dụ như: mail1.vothanhduy.com.

Nhớ thay vothanhduy.com thành tên miền của bạn chứ đừng nhập y chang mình nhé.

Lưu ý: Vì một số hosting WordPress không cho phép đặt subdomain là mail.vothanhduy.com (vì có thể đã tồn tại rồi) nên mình mới thêm số 1 vào thành mail1. Để thêm subdomain, hãy đăng nhập vào tài khoản quản trị hosting và tìm phần “Domain” trong bảng điều khiển.

Bên dưới là mình làm demo với nhà cung cấp Bluehost. Các nhà cung cấp hosting khác thì bạn cũng làm tương tự nhé.

Còn nếu không rành thì gửi ticket cho đội ngũ hỗ trợ của nhà cung cấp làm giùm luôn cho tiện.

Sau khi đăng nhập, hãy chuyển đến Domain -> Subdomain.

Sau đó, nhập subdomain của bạn và nhấp vào “Create“.

Sau khi tạo subdomain, bạn cần thêm domain đó vào tài khoản Sendinblue của mình.

Thêm subdomain vào Sendinblue

Trong tài khoản Sendinblue của bạn, đi tới “Settings“, tìm “Your Senders” và nhấp vào nút “Configure“.

Sau đó nhấp vào tab “Domains” và nhấp vào nút “Add a new domain”.

Nhập toàn bộ subdomain (ví dụ: mail1.vothanhduy.com) và chọn vào ô “I would like to use this domain name to digitally sign my emails (SPF, DKIM, DMARC)”.

Sau đó nhấp vào “Save” và bạn sẽ thấy một cửa sổ bật lên liệt kê một số bản ghi DNS.

Những dòng mã này cho phép Sendinblue phê duyệt tên miền của bạn.

Mẹo: Đừng lo lắng nếu bạn vô tình đóng cửa sổ bật lên này. Bạn có thể quay lại đó bằng cách nhấp vào nút “Authenticate This Domain” bên cạnh subdomain.

Mở tab trình duyệt mới và đăng nhập lại vào tài khoản quản trị hosting. Bạn sẽ cần tìm tên miền của mình và thêm các bản ghi DNS.

Trên Bluehost, bạn thực hiện việc này bằng cách đi tới Domain »My domain và nhấp vào “Manage” bên cạnh tên miền của bạn.

Bây giờ bạn sẽ cần thêm ba bản ghi TXT được gửi từ Sendinblue.

Đầu tiên, cuộn xuống để tìm phần TXT trong bản ghi DNS của bạn. Nó sẽ như sau.

Sau đó nhấp vào “Add Record“.

Hoàn thành bản ghi đầu tiên như sau:

Host Record: mail._domainkey.mail1
Record Type: TXT
TXT Value: Copy nội dung bên Sendinblue.
TTL: 1 day

Mẹo: Host Record có thể được đặt tên là “Host” hoặc “Name” tùy theo nhà cung cấp hosting. Record Type có thể không bắt buộc phải nhập. TXT Value còn được gọi là dữ liệu TXT. Đây là đoạn mã dài về chi tiết của Sendinblue. TTL có thể là 24 giờ hoặc 86400 giây (cả hai đều là 1 ngày). Nếu bạn sử dụng GoDaddy, hãy đặt nó thành 1 giờ.

Sau khi thêm bản ghi đầu tiên của bạn, hãy nhấp vào “Save“.

Bây giờ chúng ta cần thêm một bản ghi thứ hai như sau:

Host Record: mail1
Record Type: TXT
TXT Value: v=spf1 include:spf.sendinblue.com mx ~all
TTL: 1 day

Nhấp vào “Save” khi bạn hoàn tất.

Sau khi lưu, chúng ta cần thêm một bản ghi thứ ba như sau:

Host Record: mail1
Record Type: TXT
TXT Value: Copy nội dung bên Sendinblue.
TTL: 1 day

Sau khi hoàn tất, hãy tiếp tục và lưu bản ghi này.

Cảnh báo: Sendinblue cũng có đoạn mã thứ tư gồm các bản ghi DMARC. Cái này không cần thiết. Mình thực sự khuyên bạn nên bỏ qua trừ khi bạn có kinh nghiệm với cấu hình DMARC.

Sau khi thêm đầy đủ các bản ghi, hãy quay lại Sendinblue. Đối với mỗi bản ghi, hãy nhấp vào nút “Record Added. Please Verify It”. Có thể mất 24-48 giờ để Sendinblue xác minh bản ghi của bạn, nhưng thường sẽ nhanh hơn nhiều.

Nếu nhấp vào nút này không có tác dụng gì, thì bản ghi của bạn vẫn chưa được xác minh. Vui lòng kiểm tra lại sau để xem nó đã được xác nhận chưa. Trong trường hợp này, chữ “Configured” sẽ xuất hiện màu xanh bên cạnh bản ghi.

Bạn có thể tiếp tục với hướng dẫn này trong khi quá trình xác thực đang diễn ra.

Hoàn tất thiết lập WP Mail SMTP để sử dụng Sendinblue

Quay lại cài đặt WP Mail SMTP trong trang quản trị admin WordPress. Bạn phải nhập email của người gửi và tên người gửi ngay tại đây.

Bỏ chọn ô “Return Path“, vì tùy chọn này không được Sendinblue sử dụng.

Sau đó nhấp vào Sendinblue như hình dưới.

Để tìm khóa API của bạn, bạn cần truy cập vào tài khoản Sendinblue của mình. Chỉ cần nhấp vào liên kết bên dưới trường khóa API và trang tổng quan tài khoản Sendinblue của bạn sẽ mở trong một tab mới.

Sao chép khóa API v3 của bạn từ trang này.

Như vậy là ngon lành cành đào. Tất cả các cài đặt hiện đã hoàn tất. Bước cuối cùng là gửi một email test để đảm bảo rằng mọi thứ đang hoạt động.

Chuyển đến tab “Email Test” trong WP Mail SMTP và nhập địa chỉ email bạn muốn gửi email đến. Điều này mặc định là địa chỉ email của admin trang web. Nhấp vào “Send Email“.

Bạn sẽ thấy thông báo “Test HTML email was sent successfully!” Kiểm tra hộp thư đến của bạn để xem nó đã đến chưa. Nó sẽ như sau.

Lưu ý: Nếu tài khoản Sendinblue của bạn chưa được kích hoạt, bạn sẽ thấy thông báo [permission_denied]: Unable to send email. Your SMTP account is not yet activated.

Một cách khác để khắc phục sự cố email WordPress

Như bạn có thể thấy từ danh sách các tùy chọn mailer trong plugin WP Mail SMTP, bạn không cần sử dụng Sendinblue.

Nó miễn phí và là lựa chọn tốt nhất mà mình đề xuất, nhưng các tùy chọn khác bao gồm Office 365, Gmail / G Suite và Amazon SES bạn vẫn có thể sử dụng nếu thích.

Sử dụng email WordPress bằng Gmail hoặc G Suite với WP Mail SMTP

Nếu có tài khoản Gmail hoặc G Suite, bạn có thể sử dụng tài khoản đó để gửi email của mình. Khi sử dụng plugin WP Mail SMTP, bạn không cần nhập thông tin đăng nhập email của mình vào WordPress.

Để sử dụng Gmail hoặc G Suite, hãy định cấu hình WP Mail SMTP như trên và nhấp vào tùy chọn “Google” trong phần Mailer.

Bạn chọn vào ô “Return Path“.

Bạn sẽ được nhắc nhập “Client ID” và “Client Secret“. Để có được những thông tin chi tiết này, bạn cần tạo một ứng dụng web bằng tài khoản Google của mình.

Lưu ý: Bạn có thể sử dụng quy trình này với tài khoản Gmail thông thường, nhưng sử dụng G Suite sẽ cải thiện đáng kể khả năng gửi email của bạn.

Mình hy vọng bài viết này đã giúp bạn tìm hiểu cách khắc phục sự cố không gửi được email trong WordPress.

Tổng hợp và biên soạn nội dung bởi: vothanhduy.com

Tư liệu tham khảo:

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x