Chuyển đến nội dung

Form liên hệ WordPress không gửi email? Cách sửa dứt điểm

Form báo đã gửi nhưng không có email? Tìm hiểu vì sao email WordPress bị mất và cách sửa bằng SMTP, địa chỉ From đúng, cùng bản ghi SPF, DKIM và DMARC.

Support headset next to a laptop on a desk

Form liên hệ báo “Thank you, your message has been sent.” Khách rời đi với cảm giác đã gửi xong. Nhưng email không bao giờ đến với bạn. Với website doanh nghiệp, đây là một trong những sự cố âm thầm tốn kém nhất, vì bạn không biết mình đã mất bao nhiêu khách hàng tiềm năng.

Nguyên nhân hiếm khi nằm ở chính plugin form. Trong hầu hết trường hợp, email đã được WordPress gửi đi nhưng bị từ chối, bị lọc thành spam, hoặc không được chuyển tới một máy chủ thư đúng cách. Dưới đây là cách xác định tình huống nào đang xảy ra, và cách sửa dứt điểm.

Vì sao email WordPress bị mất

Mặc định, WordPress gửi email bằng hàm mail() có sẵn của PHP, thẳng từ máy chủ web của bạn. Việc đó gây ra ba vấn đề phổ biến:

  • Nhà cung cấp hosting giới hạn hoặc chặn. Nhiều host hạn chế thư đi từ website để chống spam.
  • Máy chủ nhận không tin tưởng. Gmail, Outlook và các dịch vụ khác kiểm tra máy chủ gửi có được phép gửi cho tên miền của bạn hay không (SPF, DKIM và DMARC). Máy chủ web thường không được phép, nên thư rơi vào spam hoặc biến mất.
  • Địa chỉ “From” không khớp tên miền của bạn. Nếu form gửi “from” địa chỉ Gmail của khách, Gmail sẽ từ chối vì coi đó là giả mạo.

Bước 1: Loại trừ các nguyên nhân đơn giản

  1. Kiểm tra thư mục spam và junk của địa chỉ lẽ ra nhận thư.
  2. Kiểm tra cài đặt thông báo trong plugin form. Đảm bảo địa chỉ “Send to” đúng và thông báo đang bật. Trong Contact Form 7, đó là tab Mail; trong WPForms, đó là Settings → Notifications.
  3. Kiểm tra form có lưu bản ghi hay không. WPForms Pro, Gravity Forms và Fluent Forms lưu các lần gửi trong bảng điều khiển. Nếu bản ghi có ở đó, form vẫn hoạt động và vấn đề là gửi email. Với Contact Form 7, plugin miễn phí Flamingo có thể lưu các lần gửi.

Bước 2: Gửi email thử từ WordPress

Cài một plugin SMTP như WP Mail SMTP hoặc FluentSMTP (cả hai đều có bản miễn phí). Ngay cả khi chưa cấu hình gì, chúng đều có công cụ Email Test. Gửi thư thử tới địa chỉ của chính bạn:

  • Nếu bài kiểm tra thất bại hoặc không bao giờ đến, WordPress không gửi được email. Tiếp tục bước 3.
  • Nếu thư thử đến nhưng thư từ form thì không, vấn đề nằm ở cài đặt form, thường là địa chỉ “From” (xem bước 4).

Bước 3: Gửi email qua dịch vụ thư thật (SMTP)

Cách sửa đáng tin cậy là ngừng gửi từ máy chủ web và gửi qua nhà cung cấp email đúng cách. Trong plugin SMTP, chọn một trong các cách sau:

  • Nhà cung cấp email doanh nghiệp của bạn, chẳng hạn Google Workspace hoặc Microsoft 365. Phù hợp với lượng nhỏ như form liên hệ.
  • Dịch vụ email giao dịch, chẳng hạn Brevo, Mailgun, SendGrid, Postmark hoặc Amazon SES. Tốt nhất nếu bạn cũng gửi email đơn hàng từ WooCommerce.
  • Máy chủ SMTP của hosting, dùng một tài khoản email tạo trên tên miền của bạn.

Nhập máy chủ SMTP, cổng, mã hóa (TLS trên cổng 587 là chuẩn), cùng tên đăng nhập và mật khẩu hoặc API key mà nhà cung cấp cấp. Sau đó gửi thêm một email thử.

Mẹo: hãy lưu mật khẩu SMTP và API key trong wp-config.php nếu plugin SMTP hỗ trợ, thay vì lưu trong cơ sở dữ liệu. Cả WP Mail SMTP và FluentSMTP đều có tài liệu hướng dẫn.

Bước 4: Sửa địa chỉ “From”

Email “From” phải là một địa chỉ trên chính tên miền của bạn, ví dụ hello@yourcompany.com, và nên trùng với tài khoản bạn đã cấu hình trong SMTP. Đừng dùng địa chỉ của khách làm “From”.

Để bạn trả lời khách chỉ với một cú nhấp, hãy đặt địa chỉ của họ vào trường Reply-To. Trong Contact Form 7, thêm Reply-To: [your-email] dưới mục Additional headers. WPForms và hầu hết plugin khác có cài đặt Reply-To trong tùy chọn thông báo.

Bước 5: Thiết lập SPF, DKIM và DMARC

Các bản ghi DNS này cho máy chủ nhận biết thư của bạn là thật. Nhà cung cấp email sẽ đưa đúng giá trị cần thêm tại nhà đăng ký tên miền hoặc máy chủ DNS:

  • SPF: một bản ghi TXT liệt kê máy chủ nào được phép gửi thư cho tên miền của bạn. Bạn chỉ được có một bản ghi SPF, nên hãy thêm nhà cung cấp mới vào bản ghi hiện có thay vì tạo bản ghi thứ hai.
  • DKIM: một bản ghi TXT hoặc CNAME giúp bên nhận xác minh chữ ký số trên thư của bạn.
  • DMARC: một bản ghi TXT tại _dmarc.yourdomain.com cho bên nhận biết phải làm gì với thư không vượt qua kiểm tra. Bắt đầu với p=none để theo dõi.

Thay đổi DNS có thể mất vài giờ mới có hiệu lực. Sau đó, gửi thư thử tới một địa chỉ Gmail, mở thư và chọn Show original. Bạn muốn thấy PASS cho SPF, DKIM và DMARC.

Bước 6: Kiểm tra xung đột và bộ nhớ đệm

  • Plugin cache có thể phục vụ bản cũ của trang form với token bảo mật đã hết hạn, nên lần gửi thất bại mà không báo gì. Loại trang liên hệ khỏi cache trang.
  • reCAPTCHA hoặc công cụ chống spam khác có thể chặn lần gửi thật nếu khóa sai hoặc tên miền chưa được đăng ký với khóa đó.
  • Xung đột plugin: tạm tắt các plugin khác (hoặc dùng chế độ troubleshooting của plugin Health Check & Troubleshooting) rồi thử lại.

Giữ cho mọi thứ tiếp tục hoạt động

Bật nhật ký email trong plugin SMTP để bạn thấy mọi thư WordPress gửi và thư đó có được chấp nhận hay không. Sau đó, mỗi tháng hãy tự gửi form một lần. Việc này chỉ mất một phút và phát hiện sự cố trước khi khách hàng gặp phải.

Vẫn không nhận được email từ form? Chúng tôi thiết lập gửi SMTP ổn định, sửa cài đặt form và kiểm tra bản ghi SPF, DKIM và DMARC. Dịch vụ WordPress Fix của chúng tôi có giá cố định $45, được xác nhận trước khi chúng tôi bắt đầu. Yêu cầu sửa lỗi.

Câu hỏi thường gặp

Vì sao form báo “đã gửi” nếu email không bao giờ đến?

Form chỉ biết WordPress đã nhận tin nhắn để gửi. Form không thấy máy chủ thư nhận sau đó có từ chối thư hay xếp vào spam hay không.

Tôi có cần dịch vụ SMTP trả phí không?

Thường là không. Hầu hết nhà cung cấp có gói miễn phí đủ cho lượng form liên hệ. Gói trả phí hợp lý với cửa hàng WooCommerce có nhiều đơn.

Tôi có thể dùng địa chỉ Gmail để gửi email WordPress không?

Bạn có thể kết nối tài khoản Google qua SMTP, nhưng địa chỉ “From” vẫn nên thuộc tên miền của bạn để thư đến nơi tốt nhất. Dùng địa chỉ Gmail miễn phí làm “From” rất dễ không vượt qua kiểm tra DMARC.

Vẫn đang kẹt? Chúng tôi có thể sửa giúp bạn

Cho chúng tôi biết chuyện đang xảy ra. Chúng tôi xác nhận phạm vi và giá trước khi bất kỳ công việc nào bắt đầu.