Lỗi Contact Form 7 & cách khắc phục

Quảng cáo
Ads_ngang
Website dinhthuanit.com có bài Lỗi Contact Form 7 & cách khắc phục

Khi bạn thiết kế website bằng WordPress thì Contact Form 7 là plugin không thể thiếu để tạo form trên website. Contact Form 7 có bổ trợ cấu hình thông báo lỗi & xác minh tính hợp lệ trường. Nó giúp định hướng tốt người sử dụng & nhận các phản hồi một cách chính xác. Dưới đây là những lỗi thông dụng thường gặp khi sử dụng contact form 7.

Xung đột tên trường

Có một số tên bạn tránh sử dụng khi đặt tên trường, vì WordPress có sử dụng tham số riêng để truy vấn dữ liệu & bạn không nên sử dụng các tên biến này. Mặc định Mỗi form có chứa các trường ẩn chuyên biệt để sử lý dữ liệu trong contact form 7. Các trường này chẳng thể thay thế !

Để khắc phục cách tốt nhất bạn tránh sử dụng tên đặc biệt để đặt cho tên trường của bạn hoặc thêm tiền tố /hậu tố để không trùng với bất kỳ trường nào. Ví dụ: sử dụng tên như ‘your-name’ hoặc ‘name-1234’ thay vì ‘name’

Dùng label cho multi-select checkbox

Lỗi này xẩy ra khi form có tối thiểu một label mà chứa từ 2 trường form trở lên. Lưu ý: Một thẻ label chỉ sử dụng để mô tả cho một trường duy nhất.

Ví dụ sau sẽ không hợp thức khi bạn bao thẻ label với trường checkboxes hoặc radio buttons.

     

Contact form 7 có tích hợp label cho các trường đa chọn lựa này. Do vậy nếu bạn sử dụng cách như trên là không hợp lệ.

Trường trống?

Kiểu lỗi này bạn hay thấy trong trường Subject hoặc Message ở tab mail. Điều đó cho thấy trường không chứa nội dung.

Đừng quên điền vào giá trị này trên form, nếu lỗi này tái diễn không thể chỉ đánh dấu spam cho mail của bạn mà rất cũng có thể có thể tạo nên lỗi gửi email trong WordPress trên một số hosting.

Nếu bạn sử dụng trường mail, đáp ứng hiện hữu giá trị & không chứa ký tự cách thậm trí được dùng từ giá trị nhập bởi người dùng.

Giả sử bạn có trường Subject, có chứa thẻ tag như sau [your-subject] :

 Subject: [your-subject]  

Như bạn có thể thấy giá trị này sẽ thay thế bởi trường your-subject & sử dụng cho tiêu đề mail khi người dùng nhấn nút gửi Form. Do đó hãy đảm bảo giá trị này không rỗng.

Tuy nhiên, nếu người dùng làm trống trường, tiêu đề email sẽ không tồn tại. Để khắc phục lỗi này bạn cũng có thể thiết lập mặc định yêu cầu bắt buộc điền cho trường bằng cách thêm *

  // Optional text field =>  Not good // Required text field =>  Good  

hoặc thêm một vài nội dung đi cùng thẻ tag.

 Subject: You got a message "[your-subject]"  

Sai cú pháp mailbox

Lỗi này xảy ra với trường To/From trong tab Mail. Cũng được biết đến như phần header trong mail. mailbox là một chỉ email, vd [email protected]

Một định dạng khác chứa tên và email được bao bởi cặp ký tự < > . VD:

 John Smith [email protected]  

Nhưng nếu định hình mailbox theo cách này thì sai:

 John Smith [email protected] 

Bạn cũng có thể thêm nhiều mailbox, và nó cách nhau bởi dấu phẩy.

 John Smith  <  [email protected]  > , John Smith Jr.  <  [email protected]  >   

Bên cạnh đó, Bạn cũng có thể có thể sử dụng tag trong mailbox nhưng hãy thận trọng. Khi bạn sử dụng tag trong phần email của mailbox, cần đảm bảo trường tag đó luôn chứa giá trị là email.

Email người gửi không theo tên miền

Lỗi này sẩy ra ở tab Mail nếu giá trị trường To/From hợp lệ (mailbox) nhưng địa điểm email không theo tên miền website

Mail header không lệ

Bạn thiết lập lỗi ở Tùy chọn “Additional Headers” ở tab Mail lúc nhập sai định dạng cho phần mail header.

Mail header được cấu thành gồm tên, theo sau bởi dấu (:) và email. Xem 2 VD sau:

 # giá trị sau hợp thức Cc: [email protected] Reply-To: [email protected] # giá trị sau không hợp lệ Cc [email protected] // thiếu : Reply To: [email protected] // có ký tự cách "Reply To"  

Tệp định lèm không hiện hữu

Lỗi này sẩy ra với trường upload file, khi bạn thiết lập đường dẫn file không tồn tại. Lỗi này cũng đều có thể gây hoang mang, và làm bạn khó hiểu vì bạn phải phân biệt ‘absolute path’ và ‘relative path’. Nếu tên file có chứa ký tự đầu tiên ‘/’ đó là absolute path. Nếu bạn sử dụng relative path, file sẽ bắt đầu từ thư mục wp-content

Không cho phép tạo files ngoài thư mục wp-content? đúng vậy. Bạn cũng có thể có thể thu được thông báo lỗi do một hay nhiều files trong trường `File Attachments` có chỉ định sai đường dẫn. VÌ nguyên nhân bảo mật contact form 7 không cấp phép tạo file ngoài thư mục wp-content.

Bạn vẫn cũng có thể có thể tạo file trong thư mục wp-content hoặc tạo một thư mục con để chứa files tải lên.

Ngoài ra, chặn định hình file trong WordPress cũng chính là một nguyên nhân.

Ký tự HTML trong tin nhắn lỗi?

Lưu ý bạn chưa được phép sử dụng ký tự HTML trong nội dung thông báo lỗi.

Sử dụng cấu hình chưa được hỗ trợ

Cài đặt ‘on_sent_ok’ và ‘on_submit’ đã biết thành loại bỏ từ năm 2017. Nếu bạn sử dụng tùy chọn này trong mục Additional Settings, vui lòng thay thế bằng sự kiện DOM HTML.

Spam mail

Nếu email gửi đi từ contact form, bạn nhận được email này từ dịch vụ mail nhưng trong mục spam. Bạn có thể cấu hình email template cho contact form 7 như thế này:

 From: [your-name] Email: [your-email] Message: [your-message] ---- This e-mail was sent from a contact form on (http://domain.com)  

Bạn cũng có thể có thể thấy mẫu form trên không có nội dung email, như vậy khi gửi đi cho 1 ai đó liên tục email của bạn sẽ bị gọi là spam.

Không thể gửi email với SMTP

Cách phổ biến nhất khi gửi email đi từ web server trên website của bạn là sử dụng SMTP. Xem chi tiết cách cấu hình gửi email với SMTP.Tuy nhiên trong trường hợp nếu lưu trữ hosting của bạn chặn cổng SMTP bạn vẫn có thể gửi email thông qua dịch vụ API khác như sendgrid, sendinblue,..

Trước tiên, bạn cần tắt gửi mail trong contact form 7. Thêm dòng này vào functions.php

 function my_skip_mail($f){ $submission = WPCF7_Submission::get_instance(); return true; // DO NOT SEND E-MAIL } add_filter('wpcf7_skip_mail','my_skip_mail');  

Có biết bao dịch vụ mail miễn phí, một trong số đó mình sử dụng Mailgun . Mailgun là dịch vụ gửi mail miễn phí, với tài khoản cơ bản bạn có thể gửi 10,000 email mỗi tháng.

Bạn cũng đều có thể tải thư viện mailgun PHP tại đây. Chúng ta sẽ chèn code gửi mail với mailgun trong lúc người sử dụng nhấn submit form. Contact form 7 cho bạn tùy biến linh hoạt, trong các đó có hook wpcf7_before_send_mail , bạn cũng có thể có thể sử dụng hook này để gửi email từ server riêng. Để thực hiện, bạn thêm đoạn code sau vào file functions.php

 add_action( 'wpcf7_before_send_mail', wpcf7_sendEmailByAPI ); function wpcf7_sendEmailByAPI( $cf7 ) { // get the contact form object $wpcf7 = WPCF7_ContactForm::get_current(); // do not send the email $wpcf7-> skip_mail = true; # Include the Autoloader (see "Libraries" for install instructions) require 'vendor/autoload.php'; # Instantiate the client. $mgClient = new MailgunMailgun('405266168726e24048c5bfb1e7cb1f06-4525e19d-38691604'); $domain = "sandboxc95aa410d7f84bd7ac3fcc1b23469fe1.mailgun.org"; # Make the call to the client. $result = $mgClient-> sendMessage("$domain", array('from' =>  'Mailgun Sandbox  <  [email protected]  > ', 'to' =>  'Hoang Quach  <  [email protected]  > ', 'subject' =>  'Hello Hoang Quach', 'text' =>  'Congratulations Hoang Quach, you just sent an email with Mailgun! You are truly awesome!')); }  

Lưu ý: thay mailgun API của bạn trên tài khoản mailgun.

Nếu bạn thích bài viết này, hãy ủng hộ chúng tôi bằng cách đăng ký nhận bài viết mới ở bên dưới và đừng quên chia sẻ kiến thức này với bạn bè của bạn nhé. Bạn cũng có thể có thể theo dõi blog này trên Twitter và Facebook

Bài viết Lỗi Contact Form 7 & cách khắc phục được tổng hợp và biên tập bởi: dinhthuanit.com. Mọi ý kiến đóng góp và phản hồi vui lòng gửi Liên Hệ cho dinhthuanit.com để điều chỉnh. dinhthuanit.com xin cảm ơn.

Bài Viết Liên Quan


Bài Viết Khác


Quảng cáo
Ads_ngang