Gửi mail với phpmailer

Gửi mail với phpmailer là bài hướng dẫn gửi mail với thư viện phpmailer. Gửi mail là chức năng rất cần có trong mọi website.


Vì sao phải gửi mail với phpmailer

Trong php có hàm mail giúp bạn gửi mail,nhưng hàm này có nhiều hạn chế trong sử dụng. Cụ thể là các hosting ít khi nào cho phép bạn gửi mail với hàm này. Cho nên các web dev thường cần tới các thư viện gửi mail bên ngoài như PHPMailer, Swiftmailer…

PHPMailer là thư viện gửi mail rất phổ biển, nhiều người dùng. Bài này sẽ hướng dẫn bạn cách thức gửi mail với phpmailer.

1. Tạo mật khẩu ứng dụng trong hộp thư gmail

Trước khi gửi mail với phpmailer, bạn cần tạo mật khẩu ứng dụng để chút nữa sẽ dùng khi gửi thư. Vào link sau đây xem cách tạo nhé, rất đơn giản thôi. Tạo xong thì tiếp tục ở mục 2. Download thư viện phpmailer.

2. Download thư viện phpmailer

Vào https://github.com/PHPMailer/PHPMailer và download thư viện

download-phpmailer

3. Chép thư viện vào site

– Trong htdocs tạo folder TestMail (giả định đây là folder website của bạn)

– Giải nén file vừa down, sẽ được folder PHPMailer-master rồi di chuyển folder PHPMailer-master vào folder website của bạn (folder testMail)

4. Tạo form mail

Trong folder website , tạo file guimail.php rồi code như sau:

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<form method="post" action="guimail_.php" class="col-6 m-auto border border-primary p-2">
<p>Gửi đến 
   <input name="guiden" class="form-control bg-info">
</p>
<p>Nội dung 
   <textarea name="noidung" class="form-control bg-info"></textarea> </p>
<p> 
  <button type="submit" class="btn btn-primary" >Gửi mail</button></p>
</form>

Xem thử:

5. Code gửi mail với phpmailer

Tạo trong folder website, tạo file guimail_.php và code

<?php 
require "PHPMailer-master/src/PHPMailer.php"; 
require "PHPMailer-master/src/SMTP.php"; 
require 'PHPMailer-master/src/Exception.php'; 
$mail = new PHPMailer\PHPMailer\PHPMailer(true);
try {
  $mail->SMTPDebug = 0;  // 0,1,2: chế độ debug
  $mail->isSMTP();  
  $mail->CharSet  = "utf-8";
  $mail->Host = 'smtp.gmail.com'; //địa chỉ server
  $mail->SMTPAuth = true; 
  $tennguoigui = 'Long'; //Nhập tên người gửi
  $mail->Username='emailnguoigui@gmail.com';
  $mail->Password = 'mậtkhẩu'; // mật khẩu ứng dụng
  $mail->SMTPSecure = 'ssl';   
  $mail->Port = 465;              
  $mail->setFrom('emailnguoigui@gmail.com'); 
  $mail->addAddress($_POST['guiden']); //mail người nhận  
  $mail->isHTML(true);  
  $mail->Subject = 'Gửi thư từ php';      
  $mail->Body = nl2br($_POST['noidung']); //nội dung thư
  $mail->smtpConnect( array("ssl" => array(
      "verify_peer" => false,
      "verify_peer_name" => false,
      "allow_self_signed" => true
  )));
  $mail->send();
  echo 'Đã gửi mail xong';
} catch (Exception $e) {
   echo 'Mail không gửi được. Lỗi: ', $mail->ErrorInfo;
}

– Thay 2 chỗ emailnguoigui@gmail.com bằng email mà bạn đã dùng để tạo mật khẩu ứng dụng trong bước 1 ở trên.

– Thay mậtkhẩu bằng mật khẩu ứng dụng trong bước 1 ở trên. ( Thường cấu trúc mật khẩu ứng dụng tạo trong gmail sẽ gồm 4 nhóm mỗi nhóm 4 ký tự, ví dụ xhoj aedh jtht celu )

– Hàm nl2br giúp đổi ký tự xuống hàng thành tag br để người nhận xem được nội dung thư cho đẹp

6. Test gửi mail

Vào http://localhost/testmail/GuiMail.php , nhập email người nhận và nội dung thư rồi nhắp submit sẽ gửi mail được. Nếu có lỗi gì đó gửi không được thì sửa giá trị của SMTPDebug từ 0 thành 2 rồi gửi để xem có lỗi gì để sửa nhé.

Ứng dụng của gửi mail trong phhp

Khi lập trình, việc gửi mail đến người dùng là rất cần thiết. Mục đích gửi mail là để giao tiếp với user. Ví dụ như gửi mail kích hoạt tài khoản khi đăng ký thành viên, hay gửi mail để cung cấp mật khẩu mới, hay gửi mail trong form liên hệ, hay gửi mail để thông báo đổi pass thành công …