Hiện nay một số dịch vụ hosting mặc định cấu hình đã tắt tính năng gởi mail. Điều này là do đặc thù của dịch vụ Shared Hosting luôn xảy ra tình trạng spam email ra ngoài (chủ yếu là do mã độc cài cắm vào mã nguồn website) rất lớn nên xảy ra nhiều hạn chế. Chính vì vậy, để thực hiện tính năng gởi mail, chúng ta bắt buộc phải sử dụng SMTP trên website để gửi mail ra bên ngoài. Ở bài này, mình sẽ hướng dẫn các bạn lấy thông tin và cấu hình SMTP cho WordPress để có thể gởi mail từ tài khoản Gmail bằng plugin.
SMTP là gì ?
SMTP(Simple Mail Transfer Protocol) đơn giản là một chuẩn truyền tải thư điện tử (e-mail) qua mạng Internet. Nghĩa là website của bạn gửi mail ra ngoài thông qua giao thức SMTP thay vì gửi trực tiếp từ máy chủ Hosting thông qua lệnh sendmail
hoặc mail
trên máy chủ.
Tất cả các tài khoản email đều hỗ trợ SMTP, ví dụ tài khoản Gmail của bạn cũng hỗ trợ SMTP để thực hiện gửi mail thông qua Gmail trên một ứng dụng khác.
Cài đặt plugin WP Mail SMTP
Các bạn tiến hành cài đặt và kích hoạt plugin WP Mail SMTP Plugin từ wordpress.org.
Sau khi kích hoạt, các bạn vào menu WP Mail SMTP > Thiết lập (Settings). Ở đầu trang, bên dưới mục Mail, bạn sẽ thấy Mail đi
đang để giá trị mặc định là email cài đặt wordpress. Chúng ta có thể bỏ qua giá trị ở đây vì khi thực hiện gởi mail từ Gmail, hệ thống sẽ mặc định giá trị này là Gmail được cài đặt.
Tiếp đến mục bên dưới, các bạn nhập tên người gởi vào mục Tên người gởi
. Các bạn cũng đừng quên tích chọn vào ô: Đặt đường dẫn trở về để khớp với địa chỉ Email gửi đi (From Email)
. Để bất cứ khi nào có lỗi xảy ra hoặc không gởi được mail thì chúng ta cũng nhận được thông báo về mail.
Ở phần Phương thức gởi mail
, các bạn chọn Gmail.
Sau khi đã tích chọn Gmail, thì sẽ xuất hiện bảng thông tin cấu hình như bên dưới. Chúng ta cần cung cấp thông tin Client ID và Client Secret để thiết lập.
Để có thông tin cần nhập ở trên, chúng ta cần tạo một web application mới bằng Google của bạn. Các bước đăng ký ở phần tiếp theo.
Đăng ký Web App bằng tài khoản Google
Để đăng ký một Web App mới, các bạn mở một tab mới trên trình duyệt và truy cập vào đường dẫn sau:
https://console.developers.google.com/flows/enableapi?apiid=gmail&pli=1
Sau khi đăng nhập bằng tài khoản Gmail, bạn sẽ thấy mẫu đăng ký như bên dưới.
Nhấn Continue để tiếp tục.
Cấu hình chứng chỉ cho web app
Tiếp đến, các bạn sẽ được chuyển đến trang thông báo: “The API is enabled“. Ở đây, chúng ta tiếp tục nhấn vào Go to credentials. Ở trang tiếp theo, Google sẽ yêu cầu một số thông tin, các bạn trả lời như sau:
- Which API are you using? Gmail API
- Where will you be calling the API from? Web server (e.g. node.js, Tomcat)
- What data will you be accessing? User data
Sau khi nhập xong, các bạn nhấn tiếp nút: What credentials do I need? . Ở cửa sổ bên dưới hiện ra, bận nhấn tiếp vào SET UP CONSET SCREEN.
Thiết lập CONSET SCREEN
Lúc này, một tab mới sẽ được mở ra, các bạn khoan hãy tắt tab cũ đi, ta sẽ còn quay lại sau. Ở trong cửa sổ mới, lúc này bạn cần cung cấp thông tin để tiến hành thiết lập consent screen. Nếu sở hữu tài khoản G Suite, trong mục User Type, bạn có thể chọn Internal, ngược lại nếu là người dùng Gmail bình thường thì chọn External. Rồi nhấn CREATE.
Ở phần nội dung kế tiếp, dưới mục Appliaction name bạn nhập tên ứng dụng hoặc trang web vào. Sau đó bạn bỏ qua những phần còn lại và kéo thẳng xuống đến mục Authorized domains.
Lưu ý là bạn cũng không nên upload Application logo, vì việc thay đổi logo yêu cầu phải được Google xét duyệt nên sẽ mất thời gian.
Dưới mục Authorized domains, các bạn nhập địa chỉ tên miền của mình. Lưu ý là không thêm giao thức http://
hoặc https://
. Các mục Application Homepage link, Application Privacy Policy link, và Application Terms of Service link các bạn có thể nhập đường dẫn đầy đủ đến trang web của bạn như hình dưới.
Sau khi hoàn tất, các bạn nhấn Save để lưu thông tin.
Tạo OAuth client ID
Sau khi quá trình lưu hoàn tất, Google sẽ đưa bạn trở lại màn hình quản trị OAuth consent screen. Đến đây, các bạn quay trở lại tab vừa rồi chứa nội dung: Add credentials to your project.
Dưới mục Name, các bạn nhập tên ứng dụng hoặc trang web. Ở mục Authorized JavasScript origins, các bạn nhập đường dẫn về trang web của mình. Lưu ý là các bạn nhập đường dẫn đầy đủ đến trang web, gồm cả subdir (ví dụ: https://vietrick.com/blog
). Vietrick nằm tại domain chính nên chỉ cần nhập https://vietrick.com
là đủ.
Đối với mục Authorized redirect URIs, các bạn quay trở lại trang cài đặt WP Mail SMTP, chép nội dung trong ô Authorized redirect URI để nhập vào.
Sau khi nhập đầy đủ thông tin, các bạn nhấn vào nút Refresh. Sau đó tiếp tục nhấn vào Create OAuth Client ID. Sau đó nhấn tiếp vào Done để hoàn tất quá trình đăng ký một web application.
Lấy thông tin OAuth Client ID
Tiếp đến, các bạn Click vào menu Credentials, rồi nhấn chọn edit OAuth Client IDs vừa tạo để lấy thông tin.
Đến đây là bạn đã lấy được 2 thông tin quan trọng dùng để cấu hình Gmail SMTP:
- Client ID
- Client Secret
Hoàn tất cấu hình WP Mail SMTP
Bạn sao chép 2 thông tin quan trọng ở trên và dán vào mục cấu hình WP Mail SMTP.
Sau khi hoàn tất, các bạn nhấn vào nút Save Settings để lưu cài đặt. Sau đó tiếp tục nhấn Allow plugin to send emails using your Google accont để xác nhận.
Một cửa sổ đăng nhập Google sẽ hiện lên, các bạn tiến hành đăng nhập vào tài khoản Google đã dùng để tạo app ở trên. Sau đó nhấn Allow để cấp quyền gởi mail cho app vừa tạo.
Đến đây là hoàn tất quá trình cấu hình SMTP để gởi email từ Gmail. Ở phần Authorization sẽ thông báo tài khoản Gmail của bạn đã được kết nối thành công. Bạn có thể qua tab Email Test để thử tiến hành gởi mail nhé.
Giải đáp thắc mắc
Tại sao không gởi được email kiểm tra ở Email Test?
Nếu email kiểm tra không thể gởi thành công, sẽ có debug log thông báo chi tiết lỗi. Một số lỗi phổ biến như sau:401. That’s an error.
Error: invalid_client
Lỗi này xuất hiện khi bạn nhập thông tin Client ID không chính xác. Hãy chắc chắn bạn đã sao chép Client ID đầy đủ, không thừa hoặc thiếu kí tự, kể cả khoảng trắng nào.
400. That’s an error.
Error: invalid_request
Missing required parameter: client_id
Lỗi này xuất hiện thông báo rằng bạn chưa nhập Clien ID, hoặc quên nhấn lưu, hãy thử nhập lại Client ID.
cURL error 60: SSL certificate problem
Lỗi này có nghĩa là máy chủ hosting của bạn thiếu chứng chỉ SSL. Hãy liên hệ nhà cung cấp dịch vụ hosting để được hỗ trợ nhé.
“code”: 401,
“message”: “Login Required”
Nếu lỗi này xuất hiện có nghĩa là bạn chưa cấp quyền cho ứng dụng web app vừa tạo. Hãy xem lại mục: Hoàn tất cấu hình WP Mail SMTP nhé.
Thông báo “This app isn’t verified”
Ở mục Hoàn tất cấu hình WP Mail SMTP, khi bận nhấn nút Allow plugin to send emails using your Google account, Google có thể hiển thị thông báo như trên. Để vượt qua thông báo này, các bạn nhấn vào Advanced > Process là được.
Làm thế nào để đổi tài khoản Gmail khác?
Nếu các bạn muốn đổi một tài khoản Gmail khác, thì phải thực hiện lại từ mục Đăng ký Web App bằng tài khoản Google.
Nhưng trước đó bạn cần hủy kết nối đến tài khoản Gmail hiện tại bằng cách nhấn vào nút Remove Connection.
Nếu có thắc mắc gì hay ý kiến, các bạn hãy để lại bình luận cho mình nhé.
Gửi test mail bị lỗi, bạn xem dùm mình với
Versions:
WordPress: 5.3.2
WordPress MS: No
PHP: 7.4.1
WP Mail SMTP: 1.8.1
Params:
Mailer: gmail
Constants: No
Client ID/Secret: Yes
Auth Code: Yes
Access Token: Yes
Server:
OpenSSL: OpenSSL 1.0.2k 26 Jan 2017
PHP.allow_url_fopen: Yes
PHP.stream_socket_client(): Yes
PHP.fsockopen(): Yes
PHP.curl_version(): 7.62.0
Apache.mod_security: No
Bạn kiểm tra xem có bỏ sót các bước thực hiện nào ở trên không?
Kiểm tra lại ở bước: Hoàn tất cấu hình WP Mail SMTP, xác nhận đã cấp quyền truy cập cho đúng tài khoản Gmail chính của bạn hay không?
Mình kiểm tra thấy phía user báo đã gởi mail thành công. Web của bạn có sử dụng SSL, nhưng mặc định lại không bắt buộc chuyển hướng về SSL. Nào rãnh mình sẽ có một bài về vấn đề này ảnh hướng đến SEO ra sao.
Ngoài ra bạn cũng có thể xem thêm bài viết hướng dẫn tạo trang liên hệ.
thanks bạn, mình đã fix lỗi được rồi, wordpress nó bị lỗi gửi mail trên php 7.4, mình về lại 7.2
và đã không còn lỗi nữa.
Kinh nghiệm của mình là không nên vội cập nhật phần mềm khi có bản phát hành mới.
Ít nhất nên chờ 2 tháng để xem phân tích lỗi lầm ra sao đã 😀
Cảm ơn bạn, sau một hồi lay hoay cũng đã setup thành công!