Tính năng gửi mail mặc định của Wordpress sử dụng hàm mail()
của PHP nên thư gửi đi rất dễ bị rơi vào spam hoặc một số nhà cung cấp hosting chặn tính năng này vì sợ bị spam email. Đây là vấn đề rất lớn đối với những website bán hàng làm trên nền tảng Wordpress vì khách sẽ không thể nhận được email thông báo đơn hàng, không thể nhận các tin khuyến mãi, giảm giá,… dẫn đến hiệu quả kinh doanh giảm đi rõ rệt. Vì vậy, trong bài viết này tôi sẽ hướng dẫn các bạn cách gửi mail trong Wordpress sử dụng SMTP của Gmail đảm bảo thành công 100%.
Nội dung chính:
Các plugin SMTP Mail
Để sử dụng tính năng SMTP của Gmail bạn cần cài thêm plugin. Có rất nhiều plugin làm được việc này, bạn có thể tham khảo một số plugin phổ biến ở đây:
- WP Mail SMTP by WPForms (đây là plugin được nhiều người dùng nhất)
- Easy WP SMTP
- SMTP Mailer
Tuy nhiên, trong bài viết này tôi không hướng dẫn các bạn sử dụng các plugin trên vì nếu Gmail được bật chức năng mật khẩu 2 lớp (xác minh qua điện thoại) thì các plugin đó không hoạt động được. Lý do là Google chặn kết nối khi phát hiện kết nối đó không an toàn.
Mặc dù tôi đã xem rất nhiều bài hướng dẫn trên mạng hướng dẫn tạo mật khẩu ứng dụng để sử dụng SMTP nhưng vẫn không thành công bởi khả năng bảo mật của Google quá cao. Khi phát hiện thấy sự cố đăng nhập khả nghi thì Google sẽ gửi email thông báo cho bạn với nội dung cảnh báo như sau:
Lưu ý: Các plugin trên vẫn hoạt động tốt nếu tắt mật khẩu 2 lớp nhé! Do đó nếu bạn không bật tính năng xác minh qua điện thoại thì plugin nào hỗ trợ SMTP cũng sử dụng được bình thường. Tất nhiên, vì lý do bảo mật nên tôi khuyên bạn nên bật bởi vì chúng ta vẫn có cách để sử dụng được SMTP của Gmail.
Đó là cài plugin: Post SMTP (được đề xuất) hoặc Gmail SMTP.
Giới thiệu về plugin Post SMTP Mailer/Email Log
Vào tháng 10 năm 2017, plugin SMTP phổ biến nhất Postman SMTP
đã bị xóa khỏi kho lưu trữ WordPress do lỗ hổng XSS. Tin tức này lan truyền nhanh như một cơn gió bởi tại thời điểm đó plugin này đang được hàng trăm nghìn website sử dụng.
Một số nhà nghiên cứu bảo mật đã cố gắng liên hệ với tác giả của plugin nhưng không được. Yehuda Hassine, một nhà phát triển WP là fan ruột của Post SMTP đã quyết định fix lỗi bảo mật này, đồng thời tung ra bản cập nhật mới 2 ngày sau đó. Yehuda đổi tên cho plugin thành Post SMTP Mailer / Email Log
và chia sẻ mã nguồn trên Github.
Cho đến hiện tại, Post SMTP Mailer/Email Log là plugin gửi mail được đánh giá (vote 5 sao) cao nhất trên Wordpress. Plugin này không giống như hầu hết các plugin SMTP khác vì nó hỗ trợ giao thức OAuth 2.0 để cho phép truy cập Gmail API. Có nghĩa là một hệ thống đăng nhập an toàn hơn và người dùng sẽ không phải nhập bất kỳ tài khoản hoặc mật khẩu nào.
Hướng dẫn cài đặt plugin Post SMTP Mailer/Email Log
Xem: Hướng dẫn cài đặt 1 Plugin cho WordPress.
Sau khi cài đặt và kích hoạt plugin xong, bạn đến phần Settings để cấu hình.
Click tiếp Start The Wizard
để bắt đầu.
Plugin sẽ hỏi bạn có muốn nhập cấu hình từ một plugin khác không? Cứ để None rồi Next.
Bạn điền thông tin người gửi:
Plugin sẽ tự động tìm máy chủ mail:
Bạn để mặc định như đề xuất của plugin rồi Next.
Tiếp tục Next, bạn đến bước xác minh ứng dụng:
Tạm thời dừng ở đây đã, bạn cần tạo ứng dụng Google để có Client ID và Client Secret.
Hướng dẫn tạo ứng dụng Google để gửi mail
Bước 1: Bạn truy cập vào console.developers.google.com và đăng nhập vào tài khoản Gmail sẽ sử dụng trong Wordpress.
Bước 2: Tạo một dự án mới, đặt tên như thế nào tùy bạn (tôi đặt là Use SMTP Gmail):
Bước 3: Mở dự án vừa tạo, kích hoạt API bằng cách click vào Enable API
:
Bước 4: Bạn tìm đến phần G Suite APIs, chọn Gmail API
:
Bước 5: Tiếp tục kích hoạt Gmail API bằng cách click vào Enable
:
Bước 6: Để tạo một chứng chỉ ủy quyền cho phép sử dụng API, bạn chuyển qua tab Credentials
:
Bước 7: Click vào nút Create credentials
và chọn OAuth client ID
:
Bước 8: Click vào nút Configure consent screen
:
Bước 9: Bạn điền tên ở phần Product name
(như tôi chọn là SMTP Gmail for dovanphuong.com), các ô còn lại tùy bạn khai báo hoặc bỏ trống, sau đó click Save
để lưu lại:
Bước 10: Sau khi Save thì cửa sổ tạo ID hiện ra, bạn chọn Web application
và đặt tên ở phần Name. Quay lại trang cài đặt plugin Post SMTP Mailer/Email Log ở bước trên để lấy link Authorized JavaScript origins
và Authorized redirect URI
khai báo cho ứng dụng:
Bước 11: Bạn sẽ nhận được thông tin ID và khóa bảo mật:
Bước 12: Dán Client ID
và Client Secret
vào phần cài đặt plugin Post SMTP Mailer/Email Log ở bước trên.
Sau đó Next cho đến Finish thì thôi.
Phân quyền cho ứng dụng gửi mail
Quay lại trang cài đặt, bạn click vào Grant permission with Google
Bạn sẽ được chuyển đến Google. Đăng nhập tài khoản Gmail mà bạn đã tạo ứng dụng:
Gửi mail test thử xem sao
Tại phần cài đặt, bạn click Send a Test Email
Kết quả nếu nhận được email tức là thành công!
Giới hạn của Gmail
- Gmail miễn phí thì mỗi ngày bạn chỉ được gửi tối đa 500 email;
- Gmail trả phí (sử dụng tên miền riêng) thì được gửi tối đa 2000 email mỗi ngày.
Nếu 1 ngày bạn gửi đến giới hạn số lượng email thì sẽ nhận được cảnh báo của Google và bạn phải chờ sang ngày mới để tiếp tục gửi email. Tuy nhiên với quy mô của một blog hoặc website bán hàng bình thường thì chẳng bao giờ bạn sử dụng đến giới hạn của tài khoản Gmail cho dù đó là tài khoản miễn phí chứ chưa nói đến tài khoản Gmail sử dụng tên miền riêng.
Ví dụ như blog dovanphuong.com của tôi có bật chức năng bình luận tự do và cho phép mọi người đăng ký nhận thông báo qua email khi có bình luận mới hoặc có người phản hồi bình luận của họ. Một ngày liệu có được bao nhiêu người tham gia bình luận? Biết đến bao giờ mới đạt đến con số 500 bình luận/ngày đây?
Tóm lại
Bạn có thể tạo riêng 1 tài khoản Gmail sử dụng cho việc gửi mail trong Wordpress, hoặc tắt tính năng bảo mật qua điện thoại thì mọi thứ sẽ trở nên đơn giản hơn rất nhiều. Bất cứ plugin hỗ trợ SMTP nào cũng sử dụng được Gmail nhưng khả năng bảo mật không cao, nhất là có nhiều plugin còn không mã hóa mật khẩu trong phần cấu hình vì thế chỉ cần đăng nhập được vào tài khoản Admin là có thể nhìn thấy địa chỉ email và password của Gmail, như thế rất dễ bị lộ hoặc bị hack mất Gmail.
Làm theo hướng dẫn trong bài viết này tuy hơi mất công nhưng bạn vừa có thể bật tính năng mật khẩu 2 lớp của Gmail. Trong phần cấu hình plugin không cần khai báo mật khẩu nên khả năng bảo mật tuyệt đối.