PHPMailer là gì? Hướng dẫn gửi email SMTP bằng PHP cho website

PHPMailer là gì? Hướng dẫn gửi email SMTP bằng PHP cho website

Website của bạn thường xuyên thất lạc email xác thực hay đơn hàng? Đối với các doanh nghiệp vận hành hệ thống, việc tích hợp PHPMailer là giải pháp tối ưu giúp kết nối SMTP bảo mật và triệt tiêu tình trạng email bị kẹt ở hòm thư rác. Cùng Web4s khám phá ngay cách cấu hình thư viện này để hệ thống gửi mail luôn hoạt động trơn tru và hiệu quả!

PHPMailer là gì? Vì sao website PHP nên sử dụng? 

PHPMailer là thư viện mã nguồn mở dành cho PHP giúp gửi email từ website hoặc ứng dụng web một cách ổn định và bảo mật hơn so với hàm mail() mặc định của PHP. Thư viện hỗ trợ nhiều phương thức gửi email như SMTP, Sendmail và mail(), đồng thời tích hợp sẵn các tính năng như gửi email HTML, tệp đính kèm, CC/BCC, mã hóa TLS và xác thực SMTP.

Nhờ khả năng tương thích với nhiều dịch vụ email như Gmail, Outlook, Microsoft 365, Amazon SES hay SendGrid, PHPMailer hiện là một trong những thư viện gửi email phổ biến nhất trong hệ sinh thái PHP.

phpmailer

PHPMailer hoạt động như thế nào?

Thay vì sử dụng hàm mail() của PHP, PHPMailer kết nối đến máy chủ SMTP thông qua giao thức SMTP để gửi email một cách ổn định và an toàn hơn. Sau khi xác thực thành công, máy chủ SMTP sẽ chuyển tiếp email tới máy chủ thư của người nhận để hoàn tất quá trình gửi. 

Quy trình hoạt động gồm các bước:

Bước 1: Website tạo nội dung email (tiêu đề, người nhận, nội dung, tệp đính kèm...).

Bước 2: PHPMailer xác thực với máy chủ SMTP bằng tài khoản email đã cấu hình. 

Bước 3: Máy chủ SMTP chuyển tiếp email đến máy chủ thư của tên miền người nhận. 

Bước 4: Email được phân phối vào Inbox hoặc Spam tùy thuộc vào uy tín tên miền và cấu hình xác thực email. 

Khi website cấu hình đầy đủ SPF, DKIM và DMARC, khả năng email đến hộp thư chính sẽ cao hơn, đồng thời giảm nguy cơ bị đánh dấu là thư rác. 

phpmailer

Mục đích sử dụng của PHPMailer

Trên các website PHP, thư viện gửi email PHP được sử dụng để tự động hóa quá trình gửi email tới người dùng hoặc quản trị viên. Thư viện đáp ứng hầu hết các nhu cầu gửi email phổ biến, từ xác thực tài khoản, đặt lại mật khẩu đến thông báo giao dịch và chăm sóc khách hàng. 

Gửi email xác thực tài khoản

Khi người dùng đăng ký tài khoản, website có thể sử dụng PHPMailer để gửi email xác thực hoặc mã OTP. Lợi ích:

  • Xác minh email hợp lệ.
  • Hạn chế tài khoản ảo, spam.
  • Tăng tính bảo mật cho hệ thống.

Hỗ trợ lấy lại mật khẩu

Thay vì quản trị viên xử lý thủ công, PHPMailer giúp website tự động gửi email đặt lại mật khẩu khi người dùng yêu cầu. Email thường bao gồm: Liên kết đặt lại mật khẩu, mã OTP xác thực, hướng dẫn đổi mật khẩu an toàn.

Gửi thông báo đơn hàng và giao dịch

Đối với website bán hàng, PHPMailer giúp tự động gửi email sau mỗi giao dịch. Một số thông báo phổ biến: Xác nhận đặt hàng, xác nhận thanh toán, cập nhật trạng thái vận chuyển, gửi hóa đơn điện tử…

Tiếp nhận biểu mẫu liên hệ

Khi khách hàng gửi thông tin qua form liên hệ, PHPMailer có thể:

  • Chuyển nội dung đến email doanh nghiệp.
  • Gửi email xác nhận đã tiếp nhận yêu cầu.
  • Thông báo ngay cho bộ phận kinh doanh hoặc chăm sóc khách hàng.

Điều này giúp doanh nghiệp phản hồi khách hàng nhanh chóng và hạn chế bỏ lỡ cơ hội kinh doanh.

>>> Xem thêm: Port SMTP là gì? Nên chọn cổng 25, 465 hay 587 để không bị spam

phpmailer

Hướng dẫn gửi email SMTP bằng PHP cho website 

Để sử dụng thư viện gửi email PHP, bạn cần cài đặt thư viện, cấu hình máy chủ SMTP và viết đoạn mã gửi email. Hiện nay, Composer là cách cài đặt được khuyến nghị vì giúp quản lý thư viện và cập nhật phiên bản dễ dàng. 

Bước 1: Cài đặt PHPMailer

Nếu dự án sử dụng Composer, hãy chạy lệnh sau:

composer require phpmailer/phpmailer

Sau khi cài đặt, nạp thư viện bằng: 

require 'vendor/autoload.php';

Lưu ý: Nếu không sử dụng Composer, bạn có thể tải trực tiếp thư viện từ GitHub và import các file cần thiết vào dự án. Tuy nhiên, Composer vẫn là phương pháp được khuyến nghị để dễ quản lý phiên bản và phụ thuộc. 

Bước 2: Cấu hình SMTP 

Để gửi email, PHPMailer cần kết nối với máy chủ SMTP. Bạn cần chuẩn bị các thông tin sau: 

Thông tin

Ví dụ

SMTP Host 

smtp.gmail.com 

SMTP Port 

587 (STARTTLS) hoặc 465 (Implicit TLS) 

Username 

Địa chỉ email gửi 

Password 

App Password hoặc mật khẩu SMTP 

Encryption 

STARTTLS hoặc Implicit TLS 

Lưu ý: Mỗi nhà cung cấp dịch vụ email sẽ có thông số SMTP khác nhau. Nếu sử dụng Gmail, bạn cần bật Xác minh 2 bước và tạo App Password để xác thực SMTP. 

Bước 3: Gửi email bằng PHPMailer

Sau khi cấu hình SMTP, bạn chỉ cần khai báo người gửi, người nhận, tiêu đề và nội dung email.

Ví dụ: 

$mail = new PHPMailer(true);

$mail->isSMTP();

$mail->Host = 'smtp.gmail.com';

$mail->SMTPAuth = true;

$mail->Username = 'example@gmail.com';

$mail->Password = 'your_app_password';

$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS

$mail->Port = 587;

$mail->setFrom('example@gmail.com', 'Web4S');

$mail->addAddress('customer@example.com');

$mail->isHTML(true);

$mail->Subject = 'Xác nhận đăng ký';

$mail->Body = '<h2>Chào mừng bạn đến với Web4S!</h2>';

$mail->send();

Đây là ví dụ cơ bản giúp website gửi email HTML qua Gmail SMTP. Trong thực tế, bạn có thể mở rộng để gửi tệp đính kèm, CC/BCC hoặc gửi email cho nhiều người nhận.

>>> Xem thêm: Cách gửi Mail hàng loạt bằng Gmail (2026)

phpmailer là gì

Những lỗi thường gặp khi sử dụng PHPMailer và cách khắc phục 

Trong quá trình triển khai, giải pháp gửi mail qua SMTP có thể gặp một số lỗi liên quan đến cấu hình SMTP, xác thực tài khoản hoặc kết nối máy chủ. Dưới đây là những lỗi phổ biến và cách khắc phục nhanh.

Lỗi xác thực SMTP (Authentication Failed)

Đây là lỗi thường gặp khi PHPMailer không thể đăng nhập vào máy chủ SMTP.

Nguyên nhân phổ biến:

  • Sai tên đăng nhập hoặc mật khẩu.
  • Chưa sử dụng App Password đối với Gmail.
  • SMTP AUTH chưa được cho phép hoặc tài khoản chưa có quyền gửi SMTP. 

Cách khắc phục:

  • Kiểm tra lại thông tin SMTP.
  • Tạo và sử dụng App Password nếu dùng Gmail.
  • Đảm bảo dịch vụ SMTP đã được kích hoạt.

Không thể kết nối đến máy chủ SMTP

Lỗi này thường xuất hiện dưới dạng "Could not connect to SMTP host".

Nguyên nhân phổ biến:

  • Sai địa chỉ SMTP Host hoặc Port.
  • Máy chủ chặn kết nối SMTP.
  • Tường lửa hoặc Hosting giới hạn cổng kết nối.

Cách khắc phục:

  • Kiểm tra lại Host và Port.
  • Thử chuyển giữa cổng 465 (SSL) và 587 (TLS) theo hướng dẫn của nhà cung cấp.
  • Liên hệ đơn vị Hosting nếu cổng SMTP bị chặn.

Email gửi thành công nhưng không đến hộp thư

Nếu PHPMailer không báo lỗi nhưng người nhận không thấy email, nguyên nhân thường không nằm ở thư viện mà ở cấu hình gửi email.

Cách xử lý:

  • Kiểm tra thư mục Spam hoặc Junk.
  • Cấu hình đầy đủ SPF, DKIM và DMARC cho tên miền.
  • Hạn chế sử dụng địa chỉ email hoặc tên miền có uy tín thấp.

>>> Xem thêm: PHP là gì? Hướng dẫn Thiết kế website PHP ĐƠN GIẢN

Lời kết

PHPMailer là thư viện gửi email phổ biến trong hệ sinh thái PHP, giúp website triển khai các tính năng như xác thực tài khoản, quên mật khẩu, biểu mẫu liên hệ hay thông báo đơn hàng một cách ổn định thông qua SMTP. Việc cài đặt đúng, cấu hình máy chủ email phù hợp và xử lý kịp thời các lỗi thường gặp sẽ giúp hệ thống hoạt động hiệu quả và mang lại trải nghiệm tốt hơn cho người dùng.

Hoàng Trần Anh Thư

Đăng bởi:

Hoàng Trần Anh Thư

138
Bài viết liên quan