Đối với quản trị viên của một website wordpress, việc nhận các email như mail xác nhận đổi mật khẩu, email là điều cần thiết. Tuy nhiên, với hàm gửi email mặc định của WordPress, rất có thể việc gửi email sẽ không được thực hiện hoặc nếu có thì khả năng bị liệt vào danh sách spam rất cao.

Có nhiều plugin giúp giải quyết vấn đề gửi email bằng SMTP, chẳng hạn như WP Mail SMTP, POST SMTP Mailer. Tuy nhiên bài viết sẽ đi theo hướng khác, đó là không dùng bất cứ plugin nào cả.

Code

Có 2 tập tin sẽ cần được bổ sung:

  • wp-config: Tập tin lưu trữ các cấu hình cần thiết để website WordPress có thể hoạt động.
  • functions.php trong theme đang sử dụng: Một tập tin quan trọng để định nghĩa các chức năng tùy chỉnh, gọi hành động và bộ lọc của WordPress, tải tệp CSS và JavaScript, thiết lập các tùy chọn theme, và tổ chức mã của bạn trong theme.

Code cần được thêm tập tin wp-config.php

define( 'SMTP_USER', '[email protected]' );
define( 'SMTP_PASS', 'yourpassword' );
define( 'SMTP_HOST', 'smtp.example.com' );
define( 'SMTP_FROM', '[email protected]' );
define( 'SMTP_NAME', 'Your Name' );
define( 'SMTP_PORT', '587' );
define( 'SMTP_SECURE', 'tls' );
define( 'SMTP_AUTH', true );

Hãy thay thế giá trị mẫu bằng thông tin cấu hình của dịch vụ mà bạn đang sử dụng.

  • SMTP_USER: Địa chỉ email của người dùng được sử dụng để xác thực khi kết nối với máy chủ SMTP.
  • SMTP_PASS: Mật khẩu của người dùng được sử dụng để xác thực khi kết nối với máy chủ SMTP.
  • SMTP_HOST: Địa chỉ máy chủ SMTP mà ứng dụng sẽ sử dụng để gửi email.
  • SMTP_FROM: Địa chỉ email mà ứng dụng sẽ sử dụng để gửi email đi.
  • SMTP_NAME: Tên người gửi email (có thể là tên của người dùng hoặc tên của ứng dụng).
  • SMTP_PORT: Cổng kết nối với máy chủ SMTP. Trong trường hợp này, cổng là 587.
  • SMTP_SECURE: Giao thức bảo mật được sử dụng khi kết nối với máy chủ SMTP. Trong trường hợp này, sử dụng giao thức TLS (Transport Layer Security).
  • SMTP_AUTH: Xác định xem việc xác thực bằng tên người dùng và mật khẩu là bắt buộc hay không. Trong trường hợp này, xác thực là bắt buộc (true).

Code gửi email:

function configure_smtp_email( $phpmailer ) {
    $phpmailer->isSMTP();     
    $phpmailer->Host = SMTP_HOST;
    $phpmailer->SMTPAuth = SMTP_AUTH;
    $phpmailer->Port = SMTP_PORT;
    $phpmailer->Username = SMTP_USER;
    $phpmailer->Password = SMTP_PASS;
    $phpmailer->SMTPSecure = SMTP_SECURE;
    $phpmailer->From = SMTP_FROM;
    $phpmailer->FromName = SMTP_NAME;
}

add_action( 'phpmailer_init', 'configure_smtp_email' );

Đoạn code này sẽ thay thế cho hàm gửi mail mặc định của WordPress. Hãy đọc phần tiếp theo để biết cách tích hợp vào trong website WordPress.

Tích hợp vào WordPress

Đúng như tiêu đề bài viết, chúng ta sẽ không cần dùng bất kỳ plugin nào cho thêm tính năng gửi email bằng giao thức SMTP.

Chèn vô tập tin functions.php của theme đang sử dụng.

Xét về mặt kỹ thuật, hoàn toàn có thể đưa đoạn code trên vào tập tin functions.php của giao diện gốc (parent theme) bạn đang sử dụng. Tuy nhiên, đây là cách không được khuyến khích, lời khuyên là hãy tạo một giao diện con (child theme).

Trong trường hợp theme mà bạn đang sử dụng không có child theme đi cùng, bạn có thể tạo ra bằng cách thủ công. Việc tạo một giao diện con trong WordPress thật sự không quá khó.

Truy cập vào Appearance → Theme File Editor, sau đó chọn giao diện (nên sử dụng giao diện con – child theme) đang sử dụng. Lưu ý, nếu website WordPress của bạn là multisite thì phải truy cập vào Network Admin → Themes → Theme File Editor.

Sau đó, hãy bổ sung đoạn code gửi email trên vào tập tin functions.php của giao diện.

Gửi email bằng SMTP trong WordPress - Thêm code gửi email vào tập tin functions.php.
Thêm code gửi email vào functions.php.

Kiểm tra tính năng đã hoạt động hay chưa?

Để kiếm tra, bạn có thể thử bình luận bài viết, đổi email tài khoản người dùng, gửi form. Nếu bạn nhận được email gửi đến thì tính năng đã hoạt động đúng cách.

Lời kết

Tóm lại, bạn sẽ không cần phải cài thêm plugin để có tính năng gửi email. Tuy sẽ phức tạp hơn so với việc sử dụng plugin, nhưng nó cũng giúp giảm thiểu số lượng plugin phải cài. Từ đó, cũng giảm thiểu rủi ro và tăng hiệu năng của website.

Được phân loại:

Được gắn thẻ:

,