PhPMailer Là Gì? Hướng Dẫn Cài Đặt PHPMailer

Bài viết này sẽ giới thiệu về PhPMailer và những tính năng cơ bản. Nếu bạn cần hỗ trợ, xin vui lòng liên hệ VinaHost qua Hotline 1900 6046 ext.3, email về support@vinahost.vn hoặc chat với VinaHost qua livechat https://livechat.vinahost.vn/chat.php

1. Giới thiệu về ngôn ngữ PhP cho ai lần đầu nghe tới

PHP: Hypertext Preprocessor, thường được viết tắt thành PHP là một ngôn ngữ lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát. Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới.

Ngôn ngữ, các thư viện, tài liệu gốc của PHP được xây dựng bởi cộng đồng và có sự đóng góp rất lớn của Zend Inc., công ty do các nhà phát triển cốt lõi của PHP lập nên nhằm tạo ra một môi trường chuyên nghiệp để đưa PHP phát triển ở quy mô doanh nghiệp.

2. Giới thiệu về PhPMailer

Đa số những ai có một trang web riêng cho mình thì mục đích của đại đa số sẽ là sử dụng cho mục đích kinh doanh hoặc quảng bá về một điều gì đó của riêng mình.

Bạn đang sở hữu một website bán hàng online bạn mong muốn nhận được thông báo mỗi khi có đơn hàng? Hay bạn đang là một chủ của một blog có nhiều người theo dõi và họ muốn có được những thông báo khi bạn có bài viết mới thông qua email? Hay cách hiểu đơn giản là các bạn muốn nhận được những mail thông báo từ form liên hệ. Với ngôn ngữ lập trình PHP các bạn được hỗ trợ sử dụng hàm mail tuy nhiên điều này thường gặp phải những trục trặc nhất định. Do vậy bài viết hôm nay mình sẽ giới thiệu cho các bạn cách gửi mail trong PHP bằng PHPMailer. Đây là một thư viện rất cơ bản tuy nhiên không phải ai cũng biết. Các bạn hãy theo dõi bài viết dưới đây nếu đang gặp những vấn đề khó khăn trong việc gửi mail trong PHP.

Vậy lúc đó PhPMailer sẽ giúp bạn trong vấn đề đó!

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 (cổng kết nối: 25).

3. Những tính năng của PHPMailer

  • Các bạn có thể gửi mail thông qua giao thức SMTP
  • Các bạn hoàn toàn sử dụng mail cá nhân hoặc mail doanh nghiệp để gửi thông tin cho khách hàng của bạn để làm tăng chất lượng mail của bạn.
  • Gửi mail với tốc độ nhanh ít lỗi và mail được chuyển vào thẳng inbox
  • Các bạn hoàn toàn sử dụng được cc, bcc và tệp đính kèm
  • Bên cạnh đó các bạn có thể tương tác lại với khách hàng một cách dễ dàng. Các bạn sẽ nhận được mail trong hộp thư đến của bạn.

4. Cài đặt PHPMailer

Lưu ý: Để có thể sử dụng được phpMailer các bạn phải đảm bảo các tiêu chí sau:

  • Các bạn đã cấu hình smtp server.
  • Các bạn đã mở cổng kết nối số 25.
  • Các bạn đã có tên miền của riêng mình và đã tạo bản ghi MX về smtp server của mình.

Sau khi đảm bảo được các tiêu chí trên, để tải PHPMailer các bạn vào đường dẫn này:

https://github.com/PHPMailer/PHPMailer

Để tải các bạn làm theo mũi tên như hình dưới:

Sau khi tải file zip đó về, các bạn giải nén ra thư mục tuỳ ý của mình. Như mình sẽ giải nén ở thư mục /home/asengame/public_html.

Ta sẽ có một thư mục như hình sau khi giải nén ra:

Ở thư mục này ta giữ nguyên không đụng chạm gì đến nó, ta sẽ tạo một file có tên là sendmail.php hoặc bất cứ tên gì miễn sao kết thúc bằng đuôi .php ở ngoài thư mục PHPMailer. Đây là cấu trúc thư mục và của file sendmail.php cho các bạn dễ hình dung nhất:

Ở file sendmail.php các bạn cấu hình như sau:

$mail = new PHPMailer(true);                              // Khai báo hàm

try {

    //Server settings
    $mail->SMTPDebug = 2;                                 // Bật thông báo lỗi nếu như bị sai cấu hình
    $mail->isSMTP();                                      // Sử dụng SMTP để gửi mail
    $mail->Host = 'globalproxy.online';                   // Server SMTP của mình
    $mail->SMTPAuth = true;                               // Bật xác thực SMTP
    $mail->Username = 'asengame@globalproxy.online';                 // Tài khoản email
    $mail->Password = 'asengame';                           // Mật khẩu email
    $mail->SMTPSecure = 'none';                            // Tắt SSL /TLS
    $mail->SMTPAutoTLS = false;
    $mail->SMTPSecure = false;
    $mail->Port = 25;                                                                                                              // Cổng kết nối SMTP sẽ là 25

    //Recipients
    $mail->setFrom('asengame@globalproxy.online', 'Khang');           // Địa chỉ email và tên người gửi
    $mail->addAddress('khangnh@vinahost.vn', 'Khang VNH');     // Địa chỉ người nhận
    //$mail->addAddress('ellen@example.com');               // Name is optional
    //$mail->addReplyTo('info@example.com', 'Information');
    //$mail->addCC('cc@example.com');
    //$mail->addBCC('bcc@example.com');

    //Attachments
    //$mail->addAttachment('/var/tmp/file.tar.gz');         // Nếu muốn gửi thêm tệp thì uncomment dòng này
    //$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Và cả dòng này nữa nếu gửi trên một file

    //Content
    $mail->isHTML(true);                                  // Set email format to HTML
    $mail->Subject = 'Here is the subject';                                                 // Tiêu đề
    $mail->Body    = 'This is the HTML message body in bold!'; // Nội dung
    //$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;}

 

Khi đã cấu hình tới bước này thì tuỳ theo cách các bạn cài đặt nó vào đâu thì mình không rõ, với mình thì mình sẽ nhập lệnh php sendmail.php để tiến hành kiểm tra mail đã được gửi đi hay chưa:

[root@hoangkhangn public_html]# pwd
/home/asengame/domains/globalproxy.online/public_html

[root@hoangkhangn public_html]# ls
cgi-bin  index.html  PHPMailer  sendmail.php

[root@hoangkhangn public_html]# php sendmail.php

2021-12-16 06:34:16     SERVER -> CLIENT: 220 hoangkhangn.xyz ESMTP Exim 4.95 Thu, 16 Dec 2021 13:34:16 +0700
2021-12-16 06:34:16     CLIENT -> SERVER: EHLO hoangkhangn.xyz
2021-12-16 06:34:16     SERVER -> CLIENT: 250-hoangkhangn.xyz Hello hoangkhangn.xyz [103.153.254.233]

                                          250-SIZE 52428800
                                          250-8BITMIME
                                          250-PIPELINING
                                          250-PIPE_CONNECT
                                          250-AUTH PLAIN LOGIN
                                          250-STARTTLS
                                          250 HELP

2021-12-16 06:34:16     CLIENT -> SERVER: AUTH LOGIN
2021-12-16 06:34:16     SERVER -> CLIENT: 334 VXNlcm5hbWU6
2021-12-16 06:34:16     CLIENT -> SERVER: [credentials hidden]
2021-12-16 06:34:16     SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2021-12-16 06:34:16     CLIENT -> SERVER: [credentials hidden]
2021-12-16 06:34:16     SERVER -> CLIENT: 235 Authentication succeeded
2021-12-16 06:34:16     CLIENT -> SERVER: MAIL FROM:<asengame@globalproxy.online>
2021-12-16 06:34:16     SERVER -> CLIENT: 250 OK
2021-12-16 06:34:16     CLIENT -> SERVER: RCPT TO:<khangnh@vinahost.vn>
2021-12-16 06:34:16     SERVER -> CLIENT: 250 Accepted
2021-12-16 06:34:16     CLIENT -> SERVER: DATA
2021-12-16 06:34:16     SERVER -> CLIENT: 354 Enter message, ending with "." on a line by itself
2021-12-16 06:34:16     CLIENT -> SERVER: Date: Thu, 16 Dec 2021 01:34:15 -0500
2021-12-16 06:34:16     CLIENT -> SERVER: To: Khang VNH <khangnh@vinahost.vn>
2021-12-16 06:34:16     CLIENT -> SERVER: From: Khang <asengame@globalproxy.online>
2021-12-16 06:34:16     CLIENT -> SERVER: Subject: Here is the subject
2021-12-16 06:34:16     CLIENT -> SERVER: Message-ID: <iRFCZiPo6QDkSqrFqdk2YyvaPPqZmFaznVB8L4YHY@hoangkhangn.xyz>
2021-12-16 06:34:16     CLIENT -> SERVER: X-Mailer: PHPMailer 6.5.3 (https://github.com/PHPMailer/PHPMailer)
2021-12-16 06:34:16     CLIENT -> SERVER: MIME-Version: 1.0
2021-12-16 06:34:16     CLIENT -> SERVER: Content-Type: multipart/alternative;
2021-12-16 06:34:16     CLIENT -> SERVER:  boundary="b1_iRFCZiPo6QDkSqrFqdk2YyvaPPqZmFaznVB8L4YHY"
2021-12-16 06:34:16     CLIENT -> SERVER: Content-Transfer-Encoding: 8bit
2021-12-16 06:34:16     CLIENT -> SERVER:
2021-12-16 06:34:16     CLIENT -> SERVER: This is a multi-part message in MIME format.
2021-12-16 06:34:16     CLIENT -> SERVER:
2021-12-16 06:34:16     CLIENT -> SERVER: --b1_iRFCZiPo6QDkSqrFqdk2YyvaPPqZmFaznVB8L4YHY
2021-12-16 06:34:16     CLIENT -> SERVER: Content-Type: text/plain; charset=us-ascii
2021-12-16 06:34:16     CLIENT -> SERVER:
2021-12-16 06:34:16     CLIENT -> SERVER: This is the body in plain text for non-HTML mail clients
2021-12-16 06:34:16     CLIENT -> SERVER:
2021-12-16 06:34:16     CLIENT -> SERVER: --b1_iRFCZiPo6QDkSqrFqdk2YyvaPPqZmFaznVB8L4YHY
2021-12-16 06:34:16     CLIENT -> SERVER: Content-Type: text/html; charset=us-ascii
2021-12-16 06:34:16     CLIENT -> SERVER:
2021-12-16 06:34:16     CLIENT -> SERVER: This is the HTML message body in bold!
2021-12-16 06:34:16     CLIENT -> SERVER:
2021-12-16 06:34:16     CLIENT -> SERVER:
2021-12-16 06:34:16     CLIENT -> SERVER: --b1_iRFCZiPo6QDkSqrFqdk2YyvaPPqZmFaznVB8L4YHY--
2021-12-16 06:34:16     CLIENT -> SERVER:
2021-12-16 06:34:16     CLIENT -> SERVER: .
2021-12-16 06:34:16     SERVER -> CLIENT: 250 OK id=1mxkLI-00029V-8t
2021-12-16 06:34:16     CLIENT -> SERVER: QUIT
2021-12-16 06:34:16     SERVER -> CLIENT: 221 hoangkhangn.xyz closing connection

Như trên thì mình đã gửi được và không thấy báo lỗi nào, mình tiếp tục vào email khangnh@vinahost.vn để kiểm tra mình đã nhận được mail gửi chưa:

Như vậy là mình đã nhận được.

Chúc bạn thực hiện thành công!

THAM KHẢO CÁC DỊCH VỤ TẠI VINAHOST

>> SERVER – COLOCATION – CDN

>> CLOUD – VPS

>> HOSTING

>> EMAIL

>> WEBSITE

>> TÊN MIỀN

Was this article helpful?