Bài viết

WordPress Không Gửi Mail: Nguyên Nhân Và Cách Sửa

Wordpress không gửi được mail

Tình trạng WordPress không gửi mail thường do hosting chặn hàm gửi mail PHP, cấu hình SMTP sai, DNS email chưa đúng, From Email không hợp lệ, plugin form lỗi hoặc email bị đưa vào Spam. Cách xử lý hiệu quả nhất là kiểm tra form → test wp_mail() → cấu hình WordPress SMTP → kiểm tra SPF/DKIM/DMARC → kiểm tra log gửi mail.

WordPress không gửi mail là lỗi khá phổ biến trên website sử dụng Contact Form 7, WooCommerce, form đăng ký, reset mật khẩu hoặc các chức năng gửi thông báo tự động.

Có trường hợp form báo gửi thành công nhưng người nhận không thấy email. Có trường hợp wp_mail không gửi mail, hoặc WordPress hoàn toàn không tạo được request gửi email do hosting, SMTP hoặc cấu hình plugin.

Nếu website đang gặp nhiều lỗi liên quan form, email hoặc chức năng WordPress, có thể tham khảo dịch vụ chỉnh sửa website WordPress để kiểm tra trực tiếp source code, plugin và cấu hình mail.

Mục lục nội dung:

WordPress Không Gửi Mail Là Lỗi Gì?

WordPress không gửi mail là tình trạng website không gửi được email hệ thống hoặc email từ form liên hệ đến người nhận. WordPress mặc định sử dụng hàm wp_mail(), thường dựa trên cấu hình mail của PHP hoặc server.

Sửa lỗi web không nhận mail đơn hàng
Sửa lỗi web không nhận mail đơn hàng

Các loại email thường bị ảnh hưởng gồm:

  • ✅ Email từ Contact Form 7.
  • ✅ Email reset mật khẩu WordPress.
  • ✅ Email tạo tài khoản mới.
  • ✅ Email đơn hàng WooCommerce.
  • ✅ Email từ form đăng ký.
  • ✅ Email thông báo quản trị.
  • ✅ Email từ plugin booking hoặc membership.

🔧 Kỹ thuật: Việc form báo “gửi thành công” không đồng nghĩa email đã đến Inbox. WordPress có thể đã gọi wp_mail() thành công nhưng mail server phía gửi hoặc phía nhận vẫn từ chối, đưa vào Spam hoặc không relay email.

Dấu Hiệu Website WordPress Không Gửi Email

Khi WordPress không gửi email, biểu hiện có thể khác nhau tùy plugin và mail server. Một số trường hợp website vẫn hoạt động bình thường nhưng chỉ riêng chức năng email bị lỗi.

Dấu Hiệu lỗi Website WordPress Không Gửi Email
Dấu Hiệu lỗi Website WordPress Không Gửi Email

1 số tình trạng website wordpress không gửi mail:

  • ✅ Form báo gửi thành công nhưng không nhận được mail.
  • ✅ Contact Form 7 báo lỗi gửi mail.
  • ✅ WooCommerce không gửi email đơn hàng.
  • ✅ Không nhận được email reset mật khẩu.
  • ✅ Website gửi được Gmail nhưng không gửi được email công ty.
  • ✅ Email vào Spam hoặc Junk.
  • ✅ Chỉ một số form không gửi được.
  • ✅ Website vừa chuyển hosting thì mất chức năng mail.
  • ✅ Website vừa đổi domain thì email bắt đầu lỗi.

7 Nguyên Nhân Khiến WordPress Không Gửi Mail

Trong thực tế, lỗi WordPress không gửi mail thường nằm ở một trong bảy nhóm nguyên nhân dưới đây.

Nguyên nhânDấu hiệuCách kiểm traHướng xử lý
PHP Mail bị chặnToàn bộ mail không gửiTest wp_mail()Dùng SMTP
SMTP saiAuthentication failedSMTP logSửa host/port/user/pass
From Email saiMail bị rejectKiểm tra FromDùng email cùng domain
DNS mail thiếuMail vào SpamSPF/DKIM/DMARCCấu hình DNS
Plugin form lỗiChỉ một form lỗiMail settingsSửa form/plugin
Hosting chặn outboundSMTP timeoutPort SMTPLiên hệ hosting
Email bị Spam/RejectGửi thành công nhưng không thấyMail logTối ưu mail reputation

1. Hosting Không Hỗ Trợ Hoặc Chặn PHP Mail

WordPress mặc định có thể gửi email thông qua wp_mail(). Tuy nhiên, một số hosting tắt hoặc giới hạn hàm gửi mail PHP để hạn chế spam.

Khi đó, dù code WordPress vẫn gọi:

wp_mail( $to, $subject, $message );

email có thể không được chuyển tiếp ra ngoài.

Cách test wp_mail()

Có thể dùng đoạn code kiểm tra:

$to      = 'your-email@example.com';
$subject = 'Test WordPress Mail';
$message = 'Đây là email test từ WordPress.';

$result = wp_mail( $to, $subject, $message );

var_dump( $result );

Nếu trả về:

bool(true)

điều đó chỉ cho biết WordPress đã chuyển email sang mailer mà không gặp lỗi trực tiếp. Nó không đảm bảo email đã đến Inbox.

⚠️ Lưu ý: Không nên để đoạn var_dump() trên website production. Chỉ dùng để test tạm thời rồi xóa ngay sau khi kiểm tra.

2. WordPress SMTP Cấu Hình Sai

Cấu hình WordPress SMTP là cách ổn định hơn để gửi email so với phụ thuộc hoàn toàn vào PHP Mail. Tuy nhiên, nếu sai SMTP Host, Port, Encryption hoặc mật khẩu, website vẫn không gửi được email.

Các thông số cần kiểm tra:

  • ✅ SMTP Host.
  • ✅ SMTP Port.
  • ✅ Encryption TLS/SSL.
  • ✅ SMTP Authentication.
  • ✅ Username.
  • ✅ Password hoặc App Password.
  • ✅ From Email.
  • ✅ From Name.

Ví dụ thông số thường có dạng:

SMTP Host: smtp.example.com
Port: 587
Encryption: TLS
Authentication: Yes

Nếu đang cần cấu hình từ đầu, có thể xem hướng dẫn cấu hình mail SMTP cho website WordPress.

3. From Email Không Đúng Domain

Một lỗi khá thường gặp là website sử dụng email người nhập form làm địa chỉ From.

Ví dụ khách nhập:

customer@gmail.com

và Contact Form 7 lại gửi email với:

From: customer@gmail.com

Trong khi mail thực tế được gửi từ server của:

domain.com

Cấu hình này có thể khiến server phía nhận nghi ngờ spoofing và từ chối email.

Cách cấu hình tốt hơn

Nên dùng email cùng domain làm From:

From: Website <no-reply@domain.com>

Email của khách nên đặt ở Reply-To:

Reply-To: [your-email]

🔧 Kỹ thuật: Với Contact Form 7 không gửi mail hoặc mail thường xuyên vào Spam, kiểm tra trường From trước. Đây là lỗi cấu hình rất phổ biến nhưng dễ bị bỏ qua.

4. SPF, DKIM Hoặc DMARC Chưa Cấu Hình Đúng

WordPress có thể gửi email thành công nhưng email vẫn bị đưa vào Spam nếu domain chưa có cấu hình xác thực email phù hợp.

Ba bản ghi quan trọng gồm:

  • ✅ SPF.
  • ✅ DKIM.
  • ✅ DMARC.

SPF giúp xác định server nào được phép gửi email thay mặt domain.

DKIM sử dụng chữ ký số để xác thực email không bị thay đổi trên đường truyền.

DMARC quy định cách server nhận xử lý email không vượt qua SPF hoặc DKIM.

💡 Mẹo: Nếu email gửi được đến Gmail nhưng thường nằm trong Spam, hãy kiểm tra DNS mail trước khi thay plugin WordPress.

5. Contact Form 7 Không Gửi Mail

Contact Form 7 không gửi mail có thể do sai cấu hình Mail, shortcode field không tồn tại, From Email không hợp lệ hoặc SMTP chưa hoạt động.

Ví dụ form có field:

[email* your-email]

nhưng phần Mail lại sử dụng:

[email]

thì dữ liệu không khớp.

Cấu hình Mail nên kiểm tra

  • ✅ To.
  • ✅ From.
  • ✅ Subject.
  • ✅ Additional Headers.
  • ✅ Message Body.

Ví dụ:

To: admin@domain.com
From: Website <no-reply@domain.com>
Reply-To: [your-email]

Nếu form vẫn lỗi sau khi cấu hình đúng, nên kiểm tra SMTP log hoặc hook của plugin khác.

6. Hosting Hoặc Firewall Chặn Kết Nối SMTP

Trong một số trường hợp, plugin SMTP được cấu hình đúng nhưng website vẫn báo timeout hoặc không thể kết nối tới mail server.

Lỗi có thể liên quan:

  • ✅ Port 465 hoặc 587 bị chặn.
  • ✅ Firewall chặn outbound connection.
  • ✅ DNS server không resolve SMTP Host.
  • ✅ Hosting giới hạn kết nối bên ngoài.
  • ✅ SSL certificate của mail server có vấn đề.

Thông báo có thể tương tự:

Connection timed out

Could not connect to SMTP host

Trường hợp này cần kiểm tra từ phía hosting/server chứ không nên liên tục đổi plugin SMTP.

7. Email Đã Gửi Nhưng Bị Spam Hoặc Mail Server Từ Chối

Website không nhận mail đôi khi không phải vì WordPress không gửi, mà vì phía nhận đã đưa email vào Spam, Junk hoặc từ chối hoàn toàn.

Các nguyên nhân thường gặp:

  • ✅ Domain mới chưa có reputation.
  • ✅ IP gửi mail có lịch sử spam.
  • ✅ SPF/DKIM sai.
  • ✅ Nội dung email chứa từ khóa spam.
  • ✅ From Email không đúng domain.
  • ✅ Gửi quá nhiều email trong thời gian ngắn.

Nên kiểm tra mail log để biết email đã được server gửi đi, deferred hay rejected.

Cách Sửa WordPress Không Gửi Mail Đúng Quy Trình

Khi WordPress không gửi mail, nên xử lý theo quy trình từ form đến mail server. Không nên cài nhiều plugin SMTP cùng lúc vì có thể tạo thêm xung đột.

Hướng dẫn cấu hình Mail SMTP
Hướng dẫn cấu hình Mail SMTP

Bước 1: Xác Định Loại Email Bị Lỗi

Kiểm tra lỗi xảy ra với:

  • ✅ Contact Form 7.
  • ✅ Reset password.
  • ✅ WooCommerce.
  • ✅ Form custom.
  • ✅ Hay toàn bộ email WordPress.

Nếu chỉ một form lỗi, nên tập trung kiểm tra form đó trước. Nếu toàn bộ email đều không gửi được, ưu tiên kiểm tra SMTP và server.

Bước 2: Kiểm Tra wp_mail()

Test xem WordPress có gọi được mailer hay không. Nếu wp_mail() trả lỗi, cần xem log hoặc hook wp_mail_failed.

Có thể ghi log lỗi bằng:

add_action( 'wp_mail_failed', function( $error ) {
    error_log( print_r( $error, true ) );
} );

Đoạn code này ghi lỗi mail vào PHP Error Log, phù hợp để debug trong thời gian ngắn.

Bước 3: Cấu Hình SMTP

Nếu hosting không hỗ trợ PHP Mail ổn định, nên cấu hình WordPress SMTP bằng tài khoản email hoặc dịch vụ email transactional.

Có thể tham khảo hướng dẫn hướng dẫn cấu hình mail SMTP web WordPress để kiểm tra Host, Port, Encryption và Authentication.

Bước 4: Kiểm Tra From Email

Đặt From Email cùng domain website hoặc đúng email đã xác thực trên SMTP service.

Không nên dùng email của khách làm From.

Bước 5: Kiểm Tra DNS Mail

Kiểm tra SPF, DKIM và DMARC của domain, đặc biệt nếu mail thường xuyên vào Spam.

Bước 6: Kiểm Tra SMTP Log

SMTP log giúp xác định mail đã gửi, bị reject, authentication failed hay connection timeout.

Bước 7: Kiểm Tra Hosting Nếu SMTP Không Kết Nối

Nếu cấu hình đúng nhưng không kết nối được SMTP Host, cần kiểm tra firewall, outbound port và DNS từ phía hosting.

🔧 Quy trình nên dùng:Form → wp_mail() → SMTP → From Email → DNS → Mail Log → Hosting. Quy trình này giúp xác định chính xác lỗi nằm ở WordPress hay hệ thống email.

Contact Form 7 Không Gửi Mail Phải Sửa Thế Nào?

Nếu chỉ Contact Form 7 không gửi mail nhưng các chức năng email khác của WordPress vẫn hoạt động, nguyên nhân thường nằm trong cấu hình form hoặc Mail tab của Contact Form 7.

Kiểm tra theo thứ tự:

  • ✅ Field email có đúng shortcode.
  • ✅ To Email đúng.
  • ✅ From Email cùng domain.
  • ✅ Reply-To dùng email khách.
  • ✅ SMTP hoạt động.
  • ✅ Không có plugin chặn Ajax.
  • ✅ Không có JavaScript error ảnh hưởng submit.

Ví dụ cấu hình:

To: admin@domain.com

From: Website <no-reply@domain.com>

Reply-To: [your-email]

Subject: Liên hệ mới từ website

WordPress Không Gửi Mail Sau Khi Chuyển Hosting

Website hoạt động bình thường ở hosting cũ nhưng WordPress không gửi mail sau khi chuyển hosting thường liên quan đến môi trường server mới.

Cần kiểm tra:

  • ✅ PHP Mail có bị disable.
  • ✅ SMTP port có bị chặn.
  • ✅ DNS đã trỏ đúng.
  • ✅ SMTP Host còn hợp lệ.
  • ✅ SSL/TLS có tương thích.
  • ✅ PHP version mới có ảnh hưởng plugin mail.
  • ✅ Cron có hoạt động nếu plugin gửi mail qua queue.

Với website cũ sử dụng nhiều plugin hoặc code lâu năm, việc chuyển hosting cũng có thể làm lộ ra các vấn đề tương thích PHP. Trong trường hợp đó có thể cân nhắc nâng cấp website WordPress để xử lý đồng thời code cũ, plugin và môi trường server.

Những Cách Không Nên Làm Khi WordPress Không Gửi Email

Cài Nhiều Plugin SMTP Cùng Lúc

Nhiều plugin SMTP cùng hook vào PHPMailer có thể tạo xung đột hoặc làm khó quá trình debug.

Đổi SMTP Liên Tục Mà Không Xem Log

Nếu lỗi nằm ở firewall hoặc DNS, đổi Gmail sang Outlook rồi đổi sang SMTP khác cũng không giải quyết đúng nguyên nhân.

Dùng Email Khách Làm From

Đây là lỗi phổ biến khiến email bị đánh dấu spoofing hoặc không vượt qua chính sách SPF/DMARC.

Chỉ Kiểm Tra Inbox

Nên kiểm tra Spam, Junk, mail log và trạng thái reject trước khi kết luận WordPress không gửi email.

Checklist Sửa Lỗi WordPress Không Gửi Mail

  • ✅ Kiểm tra form có submit thành công.
  • ✅ Kiểm tra To Email.
  • ✅ Kiểm tra From Email.
  • ✅ Test wp_mail().
  • ✅ Kiểm tra hook wp_mail_failed.
  • ✅ Cấu hình WordPress SMTP.
  • ✅ Kiểm tra SMTP Host.
  • ✅ Kiểm tra Port 465/587.
  • ✅ Kiểm tra TLS/SSL.
  • ✅ Kiểm tra username/password.
  • ✅ Kiểm tra SPF.
  • ✅ Kiểm tra DKIM.
  • ✅ Kiểm tra DMARC.
  • ✅ Kiểm tra Spam/Junk.
  • ✅ Kiểm tra SMTP log.
  • ✅ Kiểm tra firewall hosting.

Chi Phí Sửa Lỗi WordPress Không Gửi Mail

Chi phí xử lý WordPress không gửi mail phụ thuộc lỗi nằm ở form, plugin, SMTP hay server.

Hạng mụcGiá tham khảo
Lỗi cấu hình form/email cơ bảnTừ 300.000đ
Plugin SMTP / Contact Form300.000đ – 800.000đ
PHP hoặc code gửi mail customTừ 500.000đ
DNS / Server / Mail ServerKiểm tra và báo giá

📌 Lưu ý: Chi phí trên chỉ mang tính tham khảo. Cần kiểm tra website và hệ thống mail thực tế để xác định lỗi nằm ở WordPress, SMTP, DNS hay hosting.

Khi Nào Nên Nhờ Kỹ Thuật Sửa Lỗi Gửi Mail WordPress?

Nếu chỉ sai To Email hoặc From Email, có thể tự chỉnh. Tuy nhiên nên nhờ kỹ thuật nếu WordPress không gửi mail trong các trường hợp sau:

  • ✅ Đã cấu hình SMTP nhưng vẫn không gửi được.
  • ✅ SMTP báo timeout.
  • ✅ Contact Form 7 báo lỗi không rõ nguyên nhân.
  • ✅ WooCommerce không gửi email đơn hàng.
  • ✅ Email gửi được nhưng thường xuyên vào Spam.
  • ✅ Website vừa chuyển hosting.
  • ✅ Website sử dụng code gửi mail custom.
  • ✅ Mail server hoặc DNS cần kiểm tra sâu.

Nếu cần kiểm tra plugin, PHP, form và SMTP, có thể tham khảo dịch vụ fix lỗi website WordPress.

Trường hợp website đang có nhiều lỗi cùng lúc hoặc cần chỉnh lại chức năng form, email, giao diện và code, có thể sử dụng dịch vụ chỉnh sửa website WordPress.

Nếu đang cần xử lý một lỗi cụ thể trên website, có thể xem thêm dịch vụ sửa lỗi WordPress để khoanh vùng đúng vấn đề trước khi thay đổi hệ thống.

Câu Hỏi Thường Gặp Về WordPress Không Gửi Mail

Tại sao WordPress không gửi mail?

WordPress không gửi mail thường do PHP Mail bị hạn chế, SMTP cấu hình sai, From Email không hợp lệ, DNS mail chưa đúng hoặc plugin form gặp lỗi.

WordPress không gửi email reset mật khẩu phải làm sao?

Nên kiểm tra xem website có gửi được các email khác hay không. Nếu toàn bộ mail đều lỗi, ưu tiên cấu hình SMTP và kiểm tra mail log.

Contact Form 7 báo gửi thành công nhưng không nhận được mail vì sao?

Có thể email đã được gửi nhưng vào Spam, hoặc From Email không đúng domain. Nên kiểm tra SMTP log, Spam/Junk và cấu hình Mail của Contact Form 7.

Có bắt buộc phải dùng WordPress SMTP không?

Không bắt buộc, nhưng SMTP thường ổn định và dễ kiểm soát hơn PHP Mail, đặc biệt với website bán hàng, form liên hệ và hệ thống cần gửi email thường xuyên.

wp_mail trả true nhưng không nhận được email là sao?

wp_mail() trả true chỉ cho biết WordPress đã chuyển email sang mailer mà không gặp lỗi trực tiếp. Mail vẫn có thể bị mail server từ chối hoặc đưa vào Spam.

SMTP port 465 và 587 khác nhau thế nào?

Port 465 thường dùng kết nối SMTP qua SSL/TLS implicit, trong khi 587 phổ biến cho SMTP Submission với STARTTLS. Cần sử dụng đúng thông số mà nhà cung cấp mail yêu cầu.

Website không nhận mail sau khi chuyển hosting phải làm sao?

Hãy kiểm tra lại SMTP Host, outbound port, PHP Mail, DNS và firewall của hosting mới. Đây là các nguyên nhân phổ biến sau khi migrate website.

Kết Luận

WordPress không gửi mail không chỉ liên quan đến Contact Form 7 mà có thể xuất phát từ PHP Mail, SMTP, From Email, DNS hoặc mail server.

Quy trình xử lý nên theo thứ tự:

Kiểm tra form → test wp_mail() → cấu hình SMTP → kiểm tra From Email → SPF/DKIM/DMARC → xem mail log → kiểm tra hosting.

Không nên cài nhiều plugin SMTP hoặc đổi cấu hình liên tục khi chưa xem log vì rất dễ làm quá trình khoanh vùng phức tạp hơn.

Website vẫn không gửi được email?
Nếu đã kiểm tra form và cấu hình SMTP nhưng mail vẫn lỗi, cần xem log WordPress, SMTP, DNS và outbound connection từ hosting. Có thể tham khảo dịch vụ chỉnh sửa website WordPress để xử lý đúng nguyên nhân thay vì thay plugin liên tục.

5/5 - (1 bình chọn)

Call

Mesage

Zalo