Cấu hình cơ bản cho PHPMailer

PHPMailer là mã nguồn không thể thiếu trong lập trình PHP, sử dụng PHPMailer giúp bạn cấu hình gửi mail nhanh và dễ dàng hơn. Với WordPress, ngoài việc sử dụng plugin gửi mail, bạn cũng có thể tự mình cấu hình gửi mail thông qua SMTP.

Gửi mail trên WordPress

Trong bài viết này, ngoài việc giới thiệu cách sử dụng PHPMailer, mình còn giới thiệu đến các bạn cách cấu hình gửi mail SMTP trên WordPress không cần dùng plugin. Bạn hoàn toàn có thể sử dụng plugin để cấu hình gửi mail trên WordPress bằng SMTP, nhưng nếu bạn muôn nghiên cứu, thích tự làm thì bài viết này sẽ hữu ích cho bạn.

Xem thêm: Cấu hình SMTP Gmail trong WordPress

Có rất nhiều lý do để bạn sử dụng PHPMailer, nhiều mã nguồn mở nổi tiếng hiện nay đang dùng nó để gửi mail, trong đó có WordPress. Với PHPMailer, bạn dễ dàng cấu hình gửi mail trên website của bạn, với nhiều tính năng hay kèm theo cho người dùng, đặc biệt là có hỗ trợ khả năng gửi mail bằng HTML.

Cách sử dụng PHPMailer đơn giản nhấn đó là bạn load tập tin ‘/path/to/PHPMailerAutoload.php’ vào dự án của bạn, sau đó khởi tạo đối tượng và tiến hành cấu hình.

<?php
require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

//$mail->SMTPDebug = 3;                               // Enable verbose debug output

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;smtp2.example.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'user@example.com';                 // SMTP username
$mail->Password = 'secret';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;                                    // TCP port to connect to

$mail->From = 'from@example.com';
$mail->FromName = 'Mailer';
$mail->addAddress('joe@example.net', 'Joe User');     // Add a recipient
$mail->addAddress('ellen@example.com');               // Name is optional
$mail->addReplyTo('info@example.com', 'Information');
$mail->addCC('cc@example.com');
$mail->addBCC('bcc@example.com');

$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

Đối với WordPress thì bạn gọi hàm cũng tương tự, tuy nhiên WordPress đã load sẵn thư viện PHPMailer cho bạn rồi, bạn chỉ cần cấu hình mà thôi. Chú ý, hiện tại đang có nhiều plugin giúp bạn cài đặt và cấu hình gửi mail trên WordPress thông qua SMTP, nếu bạn chỉ là người dùng bình thường thì mình khuyên bạn nên sử dụng plugin. Ngược lại, nếu bạn thích lập trình cũng như thích mày mò về WordPress thì bạn cũng có thể thử.

add_action( 'phpmailer_init', 'my_phpmailer_example' );
function my_phpmailer_example( $phpmailer ) {
    $phpmailer->isSMTP();     
    $phpmailer->Host = 'smtp.example.com';
    $phpmailer->SMTPAuth = true; // Force it to use Username and Password to authenticate
    $phpmailer->Port = 25;
    $phpmailer->Username = 'yourusername';
    $phpmailer->Password = 'yourpassword';
}

Bên trên là thông tin cấu hình cho đối tượng $phpmailer với hook phpmailer_init. Bạn hoàn toàn có thể tìm thấy những tài liệu như thế này trên trang Codex của WordPress. Bây giờ bạn mở tập tin functions.php của giao diện lên và thêm vào các thông tin như sau:

function sb_theme_phpmailer_init_change($phpmailer) {
    $phpmailer->isSMTP();                           // Set mailer to use SMTP
    $phpmailer->Host = 'smtp.gmail.com';            // Specify main and backup SMTP servers
    $phpmailer->SMTPAuth = true;                    // Enable SMTP authentication
    $phpmailer->Username = 'codewpvn@gmail.com';    // SMTP username
    $phpmailer->Password = 'password';              // SMTP password
    $phpmailer->SMTPSecure = 'ssl';                 // Enable TLS encryption, `ssl` also accepted
    $phpmailer->Port = 465;
}
add_action('phpmailer_init', 'sb_theme_phpmailer_init_change');

Với các thông số như bên trên thì bạn đã hoàn thành xong việc cấu hình gửi mail thông qua SMTP trên WordPress bằng tay. Bạn thay các thông tin tài khoản lại theo ý của bạn, bỏ code vào tập tin functions.php của giao diện là bạn có thể gửi được mail. Đối với các bạn không gửi được mail thông qua SMTP thì hãy xem lại bài viết mình hướng dẫn trước đó nhé.

Xem thêm: Không thể gửi mail bằng SMTP trên WordPress

Nguyên nhân không gửi được mail bằng SMTP rất có thể là do hosting của bạn đang chặn port gửi mail, bạn hãy liên hệ với nhà cung cấp dịch vụ và yêu cầu họ mở port cho bạn.

Xem thêm: Liên hệ NameCheap mở port gửi mail SMTP

Nếu sau khi đã thử mọi cách mà bạn vẫn không thể gửi được mail thì có 2 khả năng có thể xảy ra, một là hosting của bạn đang sử dụng không chịu hợp tác, hai là do bạn cấu hình sai thông tin hoặc tài khoản của bạn chưa được cài đặt đúng cách. Hãy thảo luận tại bài viết này nếu bạn vẫn chưa cấu hình được SMTP cho WordPress bạn nhé.