WordPress có tính năng gởi email để thông báo các sự kiện trên Website, ví dụ như có người bình luận, khi update mã nguồn, khi thay đổi quản trị (Administrator) hay khi cần reset mật khẩu, gởi code xác thực 2 lớp để đăng nhập (Two-Factor Authentication Code),.. và email thông tin đơn hàng, email về đăng ký thành viên nếu Website có các tính năng này.
Tuy nhiên, mặc định WordPress chỉ có thể gởi email được nếu hosting hỗ trợ, cụ thể máy chủ gởi mail SMTP (Simple Mail Transfer Protocol) được cài đặt và bật sẵn trên server.
Thông thường VPS sẽ không có sẵn SMTP, shared hosting thì có nhưng mặc định thường khóa nó, chỉ mở khi có yêu cầu, bởi vì SMTP trên server khi gởi mail số lượng lớn sẽ ảnh hưởng đến hiệu năng hoạt động của máy chủ.
Trong thực tế, thay vì cài SMTP trên máy chủ chứa Website, người ta thường dùng dịch vụ SMTP chuyên dụng, như Gmail SMTP, Amazon SES, SMTP.com hay Mailgun, Sendinblue, Outlook 365,… Sử dụng các dịch vụ này thời gian gởi mail nhanh, tỉ lệ spam thấp so với việc cài SMTP và gởi mail trên máy chủ thông thường.
Giải pháp hoàn hảo cho đa số Website là dùng gói free của Gmail SMTP, cho phép gởi tối đa 500 email mỗi ngày, Gmail SMTP là dịch vụ uy tín và khả năng chống spam cao, nên thời gian gởi mail rất nhanh (gần như là ngay lập tức) và tỉ lệ bị cho vào spam cũng thấp.
Cũng nên nhắc, gởi mail từ Website WordPress thông thường chỉ dùng cho các loại email thông báo, còn nếu chạy các chiến dịch Email Marketing thì ta nên đăng ký riêng các dịch vụ Email Marketing chuyên nghiệp, cả free lẫn trả phí, uy tín có Mailchimp, MailerLite, Sendinblue, Hubspot Email Marketing, GetResponse,..
Các dịch vụ Email Marketing chuyên nghiệp cho phép gởi email số lượng lớn mỗi ngày (hàng nghìn) và hỗ trợ API Key để tích hợp vào Opt-in Form trên WordPress nhằm xây dựng Danh sách email (Mailing List).
Bài hướng dẫn Email Marketing sẽ được cập nhật sau này, ở topic này chỉ hướng dẫn đăng ký SMTP Gmail, tích hợp nó với WordPress để gởi email thông báo.
Ta cần làm 2 bước:
- Đăng ký Gmail API project để lấy Client ID và Client Secret Key, đây là 2 thông tin dùng để kết nối và sử dụng SMTP Gmail.
- Cài một plugin SMTP cho WordPress, plugin này sẽ hỗ trợ tính năng gởi email trên WordPress bằng cách kết nối với các dịch vụ SMTP chuyên nghiệp như Amazon SES, Gmail SMTP, Sendinblue…, ở đây ta chọn kết nối với Gmail SMTP qua Client ID và Client Secret Key nói trên bằng plugin WP Mail SMTP.
1. Đăng ký SMTP Gmail miễn phí
Để đăng ký dịch vụ SMTP Gmail miễn phí, bạn cần có sẵn tài khoản Google (Gmail).
Đăng nhập Google Cloud Platform
Vào trang tài khoản Google Cloud Platform bằng link này:
Google Cloud Platform Dashboard
Chú ý, nếu bạn đang login nhiều tài khoản Gmail cùng lúc thì nên thoát toàn bộ và chỉ đăng nhập tài khoản Gmail bạn muốn sử dụng SMPT của nó, để tránh bị chặn truy cập.
Nếu là lần đầu tiên login vào Google Cloud Platform, thì bạn sẽ gặp yêu cầu xác nhận quốc gia, check và chọn AGREE & CONTINUE để xác nhận:
Tạo mới/ Chọn dùng một Project
Nhấp vào Select Project để chọn dự án đã tạo sẵn, hoặc để tạo mới:
Chọn New Project để tạo một dự án dùng SMTP Gmail mới:
Mỗi tài khoản Gmail được tạo tối đa 12 projects, nếu quá số lượng, bạn cần xóa bớt thì mới tạo cái mới được. Ở đây ta đặt tên project, thường đặt theo tên Website hoặc tên nhóm dự án cho dễ nhớ:
Sau khi nhấp CREATE để tạo project, chờ một xíu, khi khởi tạo xong, bạn vào mục API & Services -> Library để truy cập vào API Library của Gmail:
Trong API Libary, gõ email vào ô tìm kiếm để chọn nhanh Gmail API, click chọn vào email hoặc Gmail API để truy cập vào trang khai báo khởi tạo:
Ở trang mới, chọn Enable để bật dịch vụ Gmail API:
Khi bật xong, chọn CREATE CREDENTIALS để khai báo các thông tin cần thiết:
Đầu tiên là khai báo Credential Type, bạn chọn Gmail API và User Data như hình dưới, rồi nhấn Next để qua phần 2:
Ở phần 2 – Your Creddentials, nhập thông tin như hình, phần tên nên đặt theo tên website cho dễ quản lý sau này, phần App logo có thể bỏ qua, phần địa chỉ email support nên là email của tài khoản đang tạo đăng ký Gmail API, còn của developer thì dùng cái nào cũng được:
Tiếp tục qua mục 3 – Scopes (Optional): phần này tùy chọn, không cần khai báo, nhấp Save and Continue để qua phần 4:
Ở phần 4 – OAuth Client ID, ta sẽ chọn Application Type là Web Application, tên thì đặt sao cũng được (hoặc để mặc định như mẫu), bỏ qua mục Authorized Javascript Origins.
Còn mục Authorized Redirect URIs ta cần điền đường dẫn chỉ định của dịch vụ mà ta sẽ sử dụng nó để gởi mail trên WordPress bằng SMPT Gmail – cụ thể là các plugin SMPT trong WordPress, ở đây là sẽ dùng một trong những plugin SMTP tốt nhất hiện nay là WP Mail SMTP, nên cần điền https://connect.wpmailsmtp.com/google/. Ở mục Authorized Redirect URIs, nhấp ADD URI và nhập link vào.
Chi tiết như hình bên dưới:
Qua phần 5 ta sẽ thấy thông tin client ID, tuy nhiên chưa cần lấy nó ngay ở đây. Ta chọn Done để xong phần khởi tạo project Gmail API:
Lúc này ta đã có project Gmail API, nhưng mặc định nó ở chế độ Testing, tức chưa dùng được trên Website bên ngoài. Để có thể dùng được, ta cần chuyển project qua chế độ Production. Ta cần vào mục OAuth consent screen, chọn Publish App:
Thông báo xác nhận Push Production, chọn Confirm để xác nhận:
Lúc này, có thể vô mục Credentials, chọn icon edit (Pencil) để mở thông tin của project:
Ta sẽ thấy 2 thông tin cần thiết: Client ID và Client Secret Key như hình bên dưới:
Bạn nên copy Client ID và Client Secret Key lưu lại chỗ nào đó để nếu muốn dùng SMTP Gmail của project này cho nhiều site thì có thể lấy nhanh thông tin.
Lưu ý là mỗi tài khoản Gmail miễn phí chỉ có thể gởi tối đa 500 email mỗi ngày, dù số lượng này khá lớn đối với nhu cầu gởi email thông báo trên WordPress, nhưng nếu bạn sử dụng trên quá nhiều site, có thể vô tình sẽ vượt quá quota 500 email/ 24 giờ, khi đó một số email cần thiết có thể không được gởi đi thành công.
Xong, tiếp theo ta sẽ cài plugin WP SMTP để kết nối với Gmail API bằng Client ID và Client Secret Key của project vừa đăng ký ở trên.
2. Cài đặt plugin SMTP để gởi email trên WordPress
Sau khi đã có tài khoản để sử dụng SMPT của Gmail, ta cần sự hỗ trợ của plugin để dùng SMPT đó trên WordPress.
Có khá nhiều plugin hỗ trợ gởi mail trên WordPress bằng cách kết nối với các dịch vụ SMTP, ở đây ta chọn plugin nổi tiếng nhất – WP Mail SMTP.
WP Mail SMTP là plugin freemium, có trên WP Repository, nên ta cài trực tiếp trên Dashboard (Plugins -> Add New):
Sau khi cài đặt và kích hoạt, chúng ta sẽ thiết lập cấu hình ngay ở phần Setup Wizard:
Đầu tiên là chọn dịch vụ SMTP muốn dùng, ở đây ta chọn Gmail/ Google SMTP:
Bạn sẽ thấy popup yêu cầu xác nhận, ở đây nói rằng Gmail SMTP chỉ thích hợp gởi email thông báo thông thường (tức giới hạn hiện nay – 2022 là tối đa 500 email mỗi 24 giờ), nếu có nhu cầu gởi quá nhiều email (vượt quá 500/ ngày) thì không nên dùng. Ta xác nhận để tiếp tục:
Trang thông tin cấu hình hiện ra, ta nhập Client ID và Client Secret Key, và chọn Connect to Google để bắt đầu kết nối với dịch vụ Gmail SMPT:
Đăng nhập vào tài khoản Gmail ứng với project Gmail API đã đăng ký để lấy Client ID và Client Secret Key:
Vì kết nối để dùng Gmail SMTP qua Gmail API nên ta sẽ nhận được cảnh báo bảo mật, vì plugin WP Mail SMTP không phải ứng dụng xác thực bởi Google, cái này bình thường, bạn chọn Advanced để thấy link kết nối:
Click vào Go to wpmailsmtp.com (unsafe) để bỏ qua cảnh báo bảo mật và tiếp tục kết nối:
Thông tin kết nối giữa wpmailsmtp.com với Google Account, ta chọn Continue để thực hiện kết nối:
Thông báo xác thực thành công, ta chọn OK để hoàn thành:
Phần cấu hình đã xong, chọn Save and Continue để tiếp tục:
Xong xuôi, 2 mục còn lại ở Setup Wizard là Detailed Email Logs và Manage Default Notifications dành cho tài gói trả phí (Pro) nên ta bỏ qua, không cần chọn Save and Continue để qua từng bước nữa, tới đây là chọn Close và Exit Setup Wizard:
Lúc này mọi thiết lập đã xong, ta chọn Save Settings để lưu lại:
Xong phần thiết lập cấu hình, ta có thể yên tâm rằng tính năng gởi email của WordPress đã ổn. Tuy nhiên, để chắc ăn, bạn nên test thử, bằng cách vô mục Email Test, gởi một email về địa chỉ email của mình:
Thông báo Success thế này là có thể kê gối ngủ yên:
Xong.