Tự động tải PHPMailer

Khi nói đến việc thêm chức năng email vào ứng dụng PHP của bạn, lớp PHPMailer là lựa chọn tốt nhất. Nó tương thích với hầu hết các framework PHP (Tuy nhiên, Laravel hoặc Symfony dựa trên thư viện SwiftMailer, nhưng vẫn có thể sử dụng PHPMailer. ) PHPMailer cung cấp chức năng mạnh mẽ để tạo email HTML có tệp đính kèm và gửi chúng tới nhiều người nhận thông qua SMTP hoặc máy chủ web cục bộ. Tìm hiểu cách dễ dàng sử dụng tất cả các tùy chọn này trong hướng dẫn này.  

PHPMailer là gì

PHPMailer là thư viện gửi email cổ điển cho PHP. Nó hỗ trợ một số cách gửi email, chẳng hạn như mail(), Sendmail, qmail và gửi trực tiếp đến máy chủ SMTP. Ngoài ra, nó cung cấp nhiều tính năng nâng cao

  • xác thực SMTP
  • mã hóa an toàn/MIME
  • hỗ trợ các giao thức TLS và SSL
  • Nội dung HTML cùng với văn bản thuần túy
  • nhiều tệp đính kèm fs, chuỗi và nhị phân
  • hỗ trợ hình ảnh nhúng

Gửi Email Với PHPMailer và SMTP

Để gửi email bằng PHPMailer và SMTP, trước tiên bạn cần cài đặt PHPMailer và định cấu hình cài đặt SMTP

Cách cài đặt PHPMailer

Cho đến phiên bản 5, PHPMailer đã cung cấp “PHPMailerAutoload. php”, vì vậy tất cả những gì cần thiết là đưa nó vào tập lệnh của bạn và tạo một phiên bản PHPMailer. Bắt đầu từ PHPMailer 6. 0, phát hành vào tháng 8 năm 2017, bạn cần cài đặt nó, tốt nhất là thông qua Composer, một trình quản lý phụ thuộc cho PHP (cách này được những người tạo PHPMailer khuyên dùng trên Github). Sau khi cài đặt Trình soạn thảo, hãy thêm dòng này vào trình soạn nhạc của bạn. tập tin json

"phpmailer/phpmailer": "~6.1"

hoặc chạy

composer require phpmailer/phpmailer

Ví dụ: nếu bạn không muốn cài đặt Composer khi làm việc trong môi trường thử nghiệm, bạn có thể thêm PHPMailer theo cách thủ công. Tải xuống các tệp có mã nguồn PHPMailer, sau đó sao chép nội dung của thư mục PHPMailer vào một trong các thư mục include_path được chỉ định trong cấu hình PHP của bạn và tải từng tệp lớp theo cách thủ công

Thêm lớp Exception sẽ giúp bạn xử lý lỗi và gỡ lỗi chúng. Trong PHP nó hoạt động tương tự như các ngôn ngữ lập trình khác. Vì vậy, nếu không có nó, nếu có lỗi trong mã gửi email của bạn, bạn sẽ chỉ thấy một thông báo cho biết Không tìm thấy lớp ngoại lệ, nhưng bạn sẽ không được cung cấp bất kỳ chi tiết nào về cách gỡ lỗi. Chúng tôi sẽ mô tả gỡ lỗi trong một phần riêng biệt của bài đăng này

Để xem hướng dẫn chi tiết về cài đặt, hãy kiểm tra tài liệu PHPMailer trên Github

cấu hình SMTP

Để PHPMailer có thể gửi email từ ứng dụng PHP của bạn, bạn sẽ cần kết nối nó với máy chủ SMTP

Trước tiên, chúng tôi khuyên bạn nên sử dụng một công cụ kiểm tra email như Kiểm tra email Mailtrap và máy chủ SMTP của nó để kiểm tra chức năng trước khi gửi bất kỳ thứ gì đến người nhận thực. Khi bạn chắc chắn rằng mọi thứ đang hoạt động bình thường và email của bạn trông ổn, bạn có thể dễ dàng thay thế cài đặt SMTP Kiểm tra Email bằng cài đặt của máy chủ thực của bạn

Ngoài việc cung cấp cho bạn cài đặt SMTP, Kiểm tra email còn cho phép bạn xem trước, kiểm tra và gỡ lỗi email theo giai đoạn. Bằng cách này, bạn có thể sửa bất kỳ lỗi nào trước khi gửi xong và không có nguy cơ gửi thư rác cho người nhận thực bằng email kiểm tra.  

Các tính năng đáng chú ý nhất của công cụ kiểm tra này bao gồm kiểm tra thư rác, xác thực HTML/CSS, báo cáo danh sách đen, v.v.

Để bắt đầu sử dụng Kiểm tra email Mailtrap, hãy tạo một tài khoản miễn phí, đi tới Kiểm tra email-> Hộp thư đến và sao chép-dán cài đặt SMTP được cung cấp vào tập lệnh PHPMailer của bạn

$phpmailer = new PHPMailer();
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.mailtrap.io';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 2525;
$phpmailer->Username = '07f4dbf61b8122';
$phpmailer->Password = 'd7fc5d57bc6eac';

Còn một điểm nữa cần đề cập về SMTP. POP-trước-SMTP để xác thực. Phương pháp này gần như được thay thế hoàn toàn bằng xác thực SMTP nhưng đôi khi vẫn có thể được sử dụng. Ưu điểm chính của nó là tính minh bạch cho người dùng đang gửi email. Kiểm tra trang Github này để lấy ví dụ về cách sử dụng POP-before-SMTP với PHPMailer

Kiểm tra email của bạn ngay bây giờ

Gửi email HTML qua SMTP với PHPMailer

Rất có thể bạn sẽ sử dụng HTML để thiết kế thông báo email của mình. Vì vậy, hãy xem xét một số ví dụ về việc sử dụng các phương thức và thuộc tính HTML

Thông báo HTML cơ bản

Nếu bạn đã sử dụng Trình soạn thảo để cài đặt, hãy bao gồm tải tự động do Trình soạn thảo tạo. tập tin php

require 'path/to/composer/vendor/autoload.php';

Nếu bạn đã cài đặt PHPMailer theo cách thủ công, hãy khởi tạo nó như thế này

require path/to/PHPMailer/src/PHPMailer.php';
require path/to/PHPMailer/src/SMTP.php';
require path/to/PHPMailer/src/Exception.php';

Sau đó tạo lớp PHPMailer

Bước tiếp theo là tạo một đối tượng PHPMailer mới

$mail = new PHPMailer();

Bây giờ hãy chuyển sang cấu hình SMTP

________số 8_______

Chỉ định tiêu đề PHPMailer

$mail->setFrom('[email protected]', 'Mailtrap');
$mail->addReplyTo('[email protected]', 'Mailtrap');
$mail->addAddress('[email protected]', 'Tim');
$mail->addCC('[email protected]', 'Elena');
$mail->addBCC('[email protected]', 'Alex');

Nếu bạn cần thêm một số địa chỉ, hãy chỉ định từng địa chỉ đó dưới dạng một lệnh mới

composer require phpmailer/phpmailer
0

Với PHPMailer, bạn có thể lặp lại tin nhắn của mình và gửi cho nhiều người nhận. Đặc biệt, bạn có thể đọc một danh sách từ bảng. Chúng tôi sẽ xem xét các ví dụ như vậy một lát sau trong bài đăng này và bây giờ hãy quay lại thông báo cơ bản của chúng tôi.  

Đặt chủ đề

composer require phpmailer/phpmailer
1

Sau đó đặt định dạng email thành HTML với thuộc tính isHTML(true)

composer require phpmailer/phpmailer
2

Bây giờ bạn có thể nhập nội dung mong muốn

composer require phpmailer/phpmailer
3

Với PHPMailer, bạn cũng có thể tạo một email HTML đẹp mắt, với định dạng tùy chỉnh, hình ảnh và gửi email có tệp đính kèm. Để thuận tiện cho bạn, PHPMailer cung cấp tùy chọn đọc nội dung thư HTML từ tệp bên ngoài, chuyển đổi hình ảnh được tham chiếu thành nhúng cũng như chuyển đổi HTML thành nội dung thay thế văn bản thuần túy cơ bản. Bằng cách này, bạn sẽ không làm quá tải mã gửi tin nhắn của mình bằng HTML và sẽ có thể cập nhật mẫu HTML của mình một cách độc lập. Để bao gồm một tệp HTML riêng, hãy thêm các thuộc tính này

composer require phpmailer/phpmailer
4

Cuối cùng, chỉ định các thuộc tính gửi email

composer require phpmailer/phpmailer
5

Kết quả "Tin nhắn đã được gửi" thông báo cho bạn rằng mã của bạn đã được thực thi chính xác

Vì bạn đã sử dụng cài đặt SMTP của Kiểm tra email Mailtrap, nên bạn có thể đi tới Kiểm tra email-> Hộp thư đến để kiểm tra xem email HTML của bạn trông như thế nào

Chụp tất cả các email kiểm tra và kiểm tra tất cả chúng ở một nơi

Email HTML có tệp đính kèm

Có hai tùy chọn để thêm tệp vào tin nhắn của bạn.  

  • Đính kèm một tệp từ hệ thống tệp của bạn – giống như bạn có thể tạo tệp đó trong ứng dụng email. Trong trường hợp này, các tệp của bạn phải được lưu trong cùng thư mục với tập lệnh
    • Ngoài ra, một tệp có thể được chèn vào tin nhắn của bạn, điều này hợp lệ đối với hình ảnh
  • Thêm phần đính kèm chuỗi – trong trường hợp này, dữ liệu được lưu trữ trong một biến được đính kèm vào thư. Ví dụ, nó có thể được trích xuất từ ​​​​cơ sở dữ liệu, vì vậy bạn không cần lưu nó dưới dạng tệp.  

Để đính kèm tệp, bạn chỉ cần chỉ định đường dẫn của nó. Ngoài ra, bạn có thể thêm tên tệp nhưng không bắt buộc. tập lệnh sẽ sử dụng tên thật của tệp của bạn

composer require phpmailer/phpmailer
6

Để thêm một tệp khác, hãy lặp lại lệnh

composer require phpmailer/phpmailer
7

Để thêm tệp đính kèm từ chuỗi, hãy sử dụng lệnh addStringAttachment(). Bạn nên chuyển nội dung và tên tệp

composer require phpmailer/phpmailer
8

Đây là một ví dụ về việc thêm dữ liệu được lưu trữ dưới dạng BLOB (Đối tượng lớn nhị phân) từ cơ sở dữ liệu MySQL

Ngoài ra, bạn có thể sử dụng một URL từ xa, như bên dưới

composer require phpmailer/phpmailer
9

Để nhúng hình ảnh, chúng tôi sử dụng tệp đính kèm CID tại đây

0

Cuối cùng, hãy xem lại một ví dụ về toàn bộ thư có hình ảnh nội tuyến và nội dung HTML bên trong

1

Kết quả "Tin nhắn đã được gửi" thông báo cho bạn rằng mã của bạn đang thực thi chính xác. Để kiểm tra kết quả gửi và thông tin chi tiết, hãy truy cập hộp thư đến Mailtrap của bạn. tin nhắn của bạn sẽ đến đó sau vài giây

Tự động tải PHPMailer

Kiểm tra & Gỡ lỗi Email của bạn

Gửi email cho nhiều người nhận

Ở trên, chúng tôi đã kiểm tra cách gửi một và cùng một email cho một số người nhận, bao gồm cả CCing và BCCing. Điều gì sẽ xảy ra nếu bạn cần gửi một tin nhắn đã sửa đổi đến một danh sách người nhận, danh sách này thường được yêu cầu đối với các email giao dịch?

2

Kiểm tra những email như thế này trong một môi trường kiểm tra an toàn

Cách sử dụng PHPMailer với Gmail SMTP

Gmail là một trong những máy chủ SMTP phổ biến nhất, cho phép bạn gửi email miễn phí.  

Trước ngày 30 tháng 5 năm 2022, trong phần cài đặt bảo mật tài khoản Google của bạn, bạn phải bật “Quyền truy cập ứng dụng kém an toàn” để gửi email bằng PHPMailer. Vì tính năng “Ứng dụng kém an toàn hơn” cho phép phần mềm và thiết bị của bên thứ ba đăng nhập vào tài khoản Gmail của bạn không còn được Google hỗ trợ, bạn có thể chọn các tùy chọn khác an toàn hơn hiện có. Tuy nhiên, nó yêu cầu một số điều chỉnh với cài đặt xác thực

Thực hiện theo Hướng dẫn Gmail PHPMailer chi tiết của chúng tôi để rút ngắn các bước từ cài đặt trình quản lý phụ thuộc PHP, Trình soạn thảo đến liệt kê toàn bộ tập lệnh gửi Gmail SMTP.  

Gửi email bằng PHPMailer mà không cần máy chủ SMTP

Tùy chọn vận chuyển SMTP là phổ biến nhất và có thể sử dụng được với PHPMailer. Tuy nhiên, như chúng tôi đã đề cập, nó cũng hỗ trợ các cách khác.  

Đối với localhost, bạn có thể sử dụng chương trình Sendmail tiêu chuẩn

3

Nếu bạn thích Unix hơn, hãy sử dụng qmail

4

Tôi có thể gửi email mà không cần PHPMailer không?

Nếu việc sử dụng PHPMailer không thực sự phù hợp với bạn, thì bạn thật may mắn, vì có rất nhiều cách khác để gửi email bằng PHP.  

Những bạn đang tìm kiếm một giải pháp nhanh chóng và không rắc rối nên cân nhắc gửi email bằng các dịch vụ email của bên thứ ba, chẳng hạn như Gửi email qua Mailtrap, là một phần của Nền tảng gửi email Mailtrap cùng với Kiểm tra email mà chúng tôi đã đề cập trước đó.  

Mailtrap Email Sending là một giải pháp gửi từ đầu đến cuối hoàn hảo để kiểm soát chức năng email của bạn và loại bỏ các sự cố gửi có thể ngăn email của bạn đến hộp thư đến của người nhận

Sao có thể như thế được?

Trang tổng quan rất phù hợp để thu thập thông tin chi tiết hữu ích về trạng thái cơ sở hạ tầng email của bạn, trong khi các cảnh báo giúp bạn biết về mọi vấn đề về khả năng gửi có thể xảy ra. Và nếu điều đó là không đủ, bạn cũng có thể tin tưởng vào các báo cáo hiệu suất khả năng gửi hàng tuần

Tích hợp gửi email vào ứng dụng PHP của bạn khá đơn giản và chỉ yêu cầu bạn hoàn thành một vài bước đơn giản

  • Trong bảng điều khiển Mailtrap, đi tới Gửi email-> Gửi tên miền, thêm và xác minh tên miền của bạn, sau đó đi tới Tích hợp API và SMTP
  • Chọn tùy chọn API và đánh dấu PHP là ngôn ngữ bạn chọn. Điều này sẽ cung cấp cho bạn một đoạn mã mà bạn nên thêm vào ứng dụng của mình
5
Tự động tải PHPMailer

Và thì đấy, bạn đã hoàn tất

Bắt đầu gửi bằng Mailtrap

gỡ lỗi

Nếu bạn gặp một số rắc rối khi gửi email qua máy chủ SMTP, lệnh SMTPDebug sẽ giúp bạn khám phá những lỗi đó và tìm ra những gì cần khắc phục.  

Bật gỡ lỗi SMTP và đặt mức gỡ lỗi trong tập lệnh của bạn như sau

6
  • cấp 1 = khách hàng;
  • cấp 2  = máy khách và máy chủ;
  • cấp 3 = máy khách, máy chủ và kết nối;
  • cấp 4 = thông tin cấp thấp.  

Sử dụng cấp 3 hoặc cấp 4 nếu bạn hoàn toàn không thể kết nối. Đặt mức 0 sẽ tắt gỡ lỗi, nó thường được sử dụng cho sản xuất.  

Để hiểu rõ hơn về cách hoạt động của quá trình gỡ lỗi trong PHPMailer, hãy xem lại một vài ví dụ.  

Ví dụ 1. Tên máy chủ SMTP không hợp lệ

7

Đối với ví dụ này, chúng tôi đã nhập tên máy chủ không hợp lệ. bẫy thư. io thay vì smtp. bẫy thư. io. và ngay lập tức nhận được thông báo rằng đã xảy ra lỗi ở giai đoạn đầu tiên giao tiếp với máy chủ.  

ví dụ 2. Thông tin không hợp lệ

8

Ví dụ này cho thấy lỗi xảy ra ở đâu. bây giờ SMTP, tên máy chủ và cổng của nó hợp lệ nhưng không tìm thấy kết hợp thông tin đăng nhập và mật khẩu, vì vậy bạn nên kiểm tra kỹ và sửa đổi thông tin đăng nhập của mình

Có một số bài viết chi tiết trên GitHub về gỡ lỗi và khắc phục sự cố, hãy tham khảo chúng khi bạn cần tìm hiểu sâu hơn về các chủ đề này.  

Những điều khác bạn nên biết về PHPMailer

Trong hướng dẫn này, chúng tôi đã xem xét các trường hợp sử dụng PHPMailer phổ biến nhất. tạo email HTML có hình ảnh và tệp đính kèm, gửi chúng qua SMTP hoặc localhost tới các loại người nhận khác nhau cùng với các tùy chọn gỡ lỗi.  

Làm cách nào để gửi email tự động trong PHP?

PHP sử dụng hàm mail() để gửi email. Chức năng này yêu cầu ba đối số bắt buộc chỉ định địa chỉ email của người nhận, chủ đề của thư và thư thực tế, ngoài ra còn có hai tham số tùy chọn khác. thư (đến, chủ đề, tin nhắn, tiêu đề, tham số);

Sự khác biệt giữa thư PHPMailer và PHP là gì?

PHPMailer là một trong những lựa chọn thay thế của hàm PHP mail(). Ưu điểm của việc sử dụng hàm PHPMailer so với PHP mail(). PHPMailer cung cấp giao diện hướng đối tượng, trong khi mail() không hướng đối tượng . Nhà phát triển không yêu cầu tạo chuỗi $headers gây đau đầu.

PHPMailer dùng để làm gì?

PHPMailer là một thư viện mã, được tích hợp` để gửi email một cách an toàn và hiệu quả bằng mã PHP từ máy chủ web . Gửi email cụ thể qua mã PHP sử dụng môi trường cấp cao để thiết lập quy ước tiêu chuẩn SMTP và các sự cố và lỗ hổng liên quan xung quanh việc truyền Thư để gửi thư rác.

Làm cách nào để đặt PHPMailer?

Cài đặt PHPMailer .
Đăng nhập vào máy chủ của bạn thông qua SSH
Đảm bảo bạn đang ở trong thư mục chính của người dùng. [máy chủ]$ cd ~
Giải nén tập tin. [máy chủ]$ giải nén chính. khóa kéo. Điều này tạo ra một thư mục có tên PHPMailer-master
Đổi tên thư mục này. [máy chủ]$ mv PHPMailer-master PHPMailer