PHPMailer là một trong những thư viện mã PHP phổ biến nhất được sử dụng bởi những gã khổng lồ CMS như Drupal, WordPress và Joomla, để gửi email bằng Gmail làm ứng dụng email. Với ý nghĩ đó, chúng tôi tự nhiên thực hiện hướng dẫn này về cách gửi email bằng PHPMailer qua Gmail SMTP.
Ngoài ra, chúng tôi sẽ kiểm tra những hạn chế mà cả hai có và những lựa chọn thay thế nào hiện có. Tương tự, nếu bạn muốn tìm hiểu thêm về cách gửi email bằng PHP, hãy xem hướng dẫn toàn diện của chúng tôi về chủ đề này.
Làm cách nào để gửi email bằng PHPMailer và Gmail SMTP?
Nếu bạn là người mới sử dụng PHPMailer và muốn khám phá ngoài thiết lập PHPMailer cho Gmail, vui lòng đọc Hướng dẫn PHPMailer của chúng tôi.
Bước đầu tiên khi gửi HTML hoặc email văn bản thuần bằng PHPMailer là yêu cầu PHPMailer sử dụng Trình soạn thảo [một trong những cách phổ biến nhất để thêm gói vào dự án PHP].
Thêm dòng này vào nhà soạn nhạc của bạn. json trong phần “require” {}
"phpmailer/phpmailer": "^6.6"
Hoặc mở dấu nhắc lệnh trong thư mục gốc dự án của bạn và chạy
composer require phpmailer/phpmailer
Nếu gói được thêm thành công, bạn sẽ thấy PHPMailer có trong trình soạn thảo. tập tin json
Tham khảo tài liệu PHPMailer trên Github để biết hướng dẫn cài đặt chi tiết
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ó.
Tìm hiểu thêm về điều này
Xác minh 2 bước
"Quyền truy cập của ứng dụng kém an toàn" không còn khả dụng đối với các tài khoản có hoặc không bật xác thực 2 yếu tố nữa. Nếu xác minh 2 bước được bật cho tài khoản Gmail của bạn và bạn cũng muốn sử dụng nó với PHPMailer, bạn sẽ cần tạo Mật khẩu ứng dụng để tiếp tục bằng cách làm theo các hướng dẫn sau của Google. Đó là mật mã gồm 16 chữ số, mà bạn nên đặt làm giá trị cho
composer require phpmailer/phpmailer
1XOAuth2
OAuth2 là phương pháp phức tạp nhất nhưng vẫn được đề xuất để xác thực PHPMailer để gửi thư bằng Gmail. May mắn thay, có oauth2-google. Đây là gói hỗ trợ Google OAuth 2. 0 cho OAuth 2 của PHP League. 0 khách hàng. Nó hỗ trợ PHP 7. 0 – PHP7. 3.
Để sử dụng nó, trước tiên bạn cần lấy ID khách hàng Google và bí mật khách hàng. Thực hiện theo hướng dẫn này của Google để thiết lập mọi thứ.
Sau khi hoàn tất, hãy cài đặt gói bằng lệnh
composer require phpmailer/phpmailer
0 và thêm chi tiết ủy quyền như hình bên dướicomposer require league/oauth2-google
use League\OAuth2\Client\Provider\Google;
$provider = new Google[[
'clientId' => '{google-client-id}',
'clientSecret' => '{google-client-secret}',
'redirectUri' => '//example.com/callback-url',
]];
Để biết thêm chi tiết, hãy theo dõi oauth2-google trên GitHub.
Bước tiếp theo là đưa thư viện PHPMailer vào tệp PHP của bạn được sử dụng để viết mã cho email html, e. g
composer require phpmailer/phpmailer
1
Sau này, bạn sẽ cần bật xác thực SMTP bằng cách kết nối với máy chủ SMTP “smtp. gmail. com“, liệt kê thông tin đăng nhập Gmail của bạn và giao thức mã hóa có liên quan. Lưu ý trong ví dụ của chúng tôi, chúng tôi sử dụng SSL thay vì TLS làm giao thức bảo mật với cổng 465
$mail->isSMTP[];
$mail->Host = 'smtp.gmail.com'; //gmail SMTP server
$mail->SMTPAuth = true;
//to view proper logging details for success and error messages
// $mail->SMTPDebug = 1;
$mail->Host = 'smtp.gmail.com'; //gmail SMTP server
$mail->Username = 'email@gmail.com'; //email
$mail->Password = ‘djsdjjhsdjhsdhj’ ; //16 character obtained from app password created
$mail->Port = 465; //SMTP port
$mail->SMTPSecure = "ssl";
Bây giờ tất cả các cấu hình đã được thiết lập, hãy chạy tập lệnh sau sau khi nhập các giá trị thực vào trình giữ chỗ
//sender information
$mail->setFrom['FROM_EMAIL_ADDRESS', 'FROM_NAME'];
//receiver email address and name
$mail->addAddress['RECEPIENT_EMAIL_ADDRESS', 'RECEPIENT_NAME'];
// Add cc or bcc
// $mail->addCC['email@mail.com'];
// $mail->addBCC['user@mail.com'];
$mail->isHTML[true];
$mail->Subject = 'PHPMailer SMTP test';
$mail->Body = " PHPMailer the awesome Package
PHPMailer is working fine for sending mail
This is a tutorial to guide you on PHPMailer integration
";
// Send mail
if [!$mail->send[]] {
echo 'Email not sent an error was encountered: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent.';
}
$mail->smtpClose[];
Đây là kết quả của thư đã gửi.
Tập lệnh PHPMailer để gửi email qua Gmail có tệp đính kèm
Sử dụng chức năng thư thông thường trong PHP, có thể gửi email có tệp đính kèm. Tuy nhiên, phương pháp này yêu cầu máy chủ thư cục bộ, viết mã dài và làm tăng khả năng xảy ra lỗi trong ứng dụng của bạn, điều này sẽ yêu cầu nhiều khắc phục sự cố trong tương lai. Vì những lý do đó, sử dụng tập lệnh PHPMailer là cách hiệu quả và an toàn hơn để thực hiện việc này
Trong ví dụ bên dưới, chúng tôi sẽ kiểm tra cách với PHPMailer, bạn có thể gửi cả tệp đính kèm đơn và nhiều tệp đính kèm. Bước đầu tiên là chuyển đường dẫn thư mục của tệp đính kèm vào phương thức
composer require phpmailer/phpmailer
2. $mail->addAttachment[__DIR__ . '/exampleattachment1.png'];
$mail->addAttachment[__DIR__ . '/exampleattachment2.jpg'];
Đây là mã đầy đủ sẽ trông như thế nào
composer require phpmailer/phpmailer
0Đây là kết quả của quá trình gửi thư có tệp đính kèm
Ngoài ra, PHPMailer có thể được sử dụng trong biểu mẫu liên hệ PHP để gửi email có tệp đính kèm
Hạn chế và các vấn đề có thể
Trước khi phát triển ứng dụng có chức năng gửi email bằng PHPMailer qua Gmail, điều quan trọng là phải hiểu các giới hạn của cả hai hệ thống để tránh bất kỳ lỗi SMTP nào.
PHPMailer là một thư viện tuyệt vời giúp giảm thời gian phát triển web và giúp bạn xây dựng tính năng gửi email và các loại chức năng thông báo khác nhưng không phải không có vấn đề.
Trước đây, các lỗ hổng bảo mật đã được tìm thấy trong thư viện, đặc biệt là những lỗ hổng khiến máy chủ thư bị tấn công bằng mã độc thông qua các biểu mẫu liên hệ trên một trang web.
Điều quan trọng cần lưu ý là PHPMailer đã vá lỗ hổng kể từ khi nó bị lộ và phát hành tài liệu về cách xử lý nó.
Đối với hầu hết các dự án đang ở điểm bắt đầu, một tài khoản Gmail thông thường là đủ. Tuy nhiên, Gmail cũng có những hạn chế riêng và đến một giai đoạn nhất định, bạn có thể cần chuyển sang một dịch vụ phù hợp với nhu cầu của mình
- 500 Email mỗi ngày [1 người nhận được tính là một email]
- Thời gian chờ 24 giờ để tiếp tục gửi sau khi đạt đến ngưỡng
Có những lựa chọn thay thế nào cho PHPMailer và Gmail?
Bên cạnh Gmail, sự lựa chọn chủ yếu của nhiều người, còn có nhiều ứng dụng email miễn phí và giá cả phải chăng khác trên thị trường. Một số tương đương nhất với Gmail và chức năng của nó bao gồm
- Thư Zoho
- Microsoft Outlook
- Apple Mail
- Yahoo. Email
Ngoài hàm PHP mail[] mặc định và PHPMailer phổ biến rộng rãi, còn có một vài lựa chọn thay thế khác cho phép bạn gửi thư. Chọn đúng phương pháp phụ thuộc nhiều vào mục tiêu chính của dự án của bạn. Ngoài ra, trước khi đưa ra lựa chọn của bạn, điều quan trọng là phải hiểu khả năng tự động hóa, tài liệu, mức độ bảo mật và hỗ trợ sẵn có cho giải pháp thay thế đó. Hãy nhanh chóng đi qua các tùy chọn có sẵn.
- Người gửi thư Symfony
Một hệ thống gửi email nội bộ của framework PHP mã nguồn mở, Symfony. Hệ thống cho phép tạo và gửi email, đồng thời đi kèm với nội tuyến CSS, tích hợp Twig, khả năng đính kèm tệp và hỗ trợ cho nhiều tin nhắn. Quan trọng nhất trong bối cảnh của chúng tôi, Symfony Mailer có thể được tích hợp trực tiếp với các nhà cung cấp dịch vụ gửi email phổ biến nhất.
- đóng dấu
Trình bao bọc API đơn giản không phụ thuộc vào khung, dễ tích hợp vào ứng dụng PHP. Trình bao bọc API được sử dụng trong Postmark, SendGrid, MailGun, Mandrill và nhiều dịch vụ gửi email của bên thứ ba khác có thể được sử dụng trong dự án của bạn.
- API thư điện tử Mailtrap
API Email cho phép bạn thực hiện khắc phục sự cố và gỡ lỗi nhanh chóng cũng như ngăn gửi các sự cố nhờ các tính năng phân tích có thể thực hiện được. Với Email API/Chuyển tiếp SMTP của chúng tôi, bạn có thể truy cập nhật ký email trong tối đa 60 ngày, do đó bạn có thể hiểu rõ hơn về vị trí của cơ sở hạ tầng email của mình