Tôi được giao nhiệm vụ nâng cấp PHPMailer phiên bản 5 hiện đang được triển khai. 2. 4 lên phiên bản ổn định mới nhất của các lớp này cho ứng dụng web thương mại điện tử đang được di chuyển từ PHP 5. 6 to PHP 7. 2
Trang web đã và đang sử dụng PHPMailer phiên bản 5. 2. 4 và các lớp liên quan của nó được cài đặt mà không cần sử dụng Trình soạn thảo mà không gặp bất kỳ sự cố nào trong nhiều năm để tạo email giao dịch được gửi qua nhà cung cấp email SMTP của bên thứ 3
Tôi muốn nâng cấp PHPMailer 5. 2. 4 lên phiên bản ổn định mới nhất và tiếp tục sử dụng các lớp trong mã mà không cần triển khai chúng qua Composer
Tôi biết rằng kể từ phiên bản PHPMailer 6. 0 mà một không gian tên cần được thêm vào mã
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;
require 'src/Exception.php';
require 'src/PHPMailer.php';
require 'src/SMTP.php';
Tôi đã truy cập dự án PHPMailer trên GitHub và tải xuống các tệp sau từ GitHub Master Branch
https. //github. com/PHPMailer/PHPMailer/tree/master/src
src/PHPMailer.php
src/Exception.php
src/SMTP.php
Tôi đã thêm các không gian tên cần thiết vào mã hiện có sử dụng các lớp này;
...
try {
...
} catch [Exception $e] {
//$e is an instance of PHPMailer\PHPMailer\Exception
echo $e->errorMessage[];
} catch [\Exception $e] {
//$e is an instance of the PHP built-in Exception class
echo $e->getMessage[];
}
Sau khi thực hiện những cập nhật này, mọi thứ đều hoạt động tốt để tạo email trong môi trường phát triển của tôi chạy PHP phiên bản 7. 2
Tôi đã sẵn sàng triển khai bản cập nhật cho máy chủ Sản xuất/trực tiếp trên trang web của mình và muốn xác nhận rằng tôi đã sử dụng phiên bản ổn định mới nhất đã được thử nghiệm đầy đủ của các lớp PHPMailer
Tôi chỉ có một câu hỏi/mối quan tâm hơi ngớ ngẩn
Khi sử dụng các lớp PHPMailer mà không sử dụng Composer, tôi đã đọc trong một số hướng dẫn để tải xuống các lớp này từ PHPMailer GitHub Project's Master Branch src
Tuy nhiên, tôi cũng đã đọc trong một số hướng dẫn sử dụng Phiên bản 6. 0 của PHPMailer. Ngoài ra, tôi dường như nhớ đã đọc ở đâu đó rằng nhánh chính không được đảm bảo ổn định
CÂU HỎI CỦA TÔI. Có đúng không khi tôi đã sử dụng src GitHub Master Branch để tải xuống các lớp PHPMailer để sử dụng trong trang web của mình nếu tôi muốn các phiên bản thử nghiệm đầy đủ, ổn định mới nhất của các lớp này?
Hoặc có lẽ, tôi nên sử dụng GitHub 6. 0 Nhánh src để tải xuống các tệp lớp này?
Thêm vào sự nhầm lẫn của tôi, tôi thấy rằng nhánh duy nhất được dán nhãn cụ thể là "ổn định" là GitHub "5. 2 Stable" Branch và phiên bản mới nhất của nó là 5. 2. 27
Đây là nhánh phát triển tương thích Drupal 8 cho phiên bản thứ 3 của PHPMailer.Tại thời điểm tạo, mô-đun này chưa được thử nghiệm với Mime Mail hoặc Hệ thống thư và trong khi mô-đun này hoạt động độc lập, nó không được đảm bảo sẽ hoạt động với hai mô-đun còn lại Email là xương sống của sự tham gia của khách hàng của bạn. API email Twilio SendGrid là dịch vụ email được các nhà phát triển và nhà tiếp thị tin cậy để tiết kiệm thời gian, khả năng mở rộng và chuyên môn về phân phối. API email linh hoạt của chúng tôi và Tác nhân chuyển thư [MTA] độc quyền, bảng điều khiển trực quan, các tính năng mạnh mẽ,
Xem phần mềm
Máy chủ email MDaemon
MDaemon Email Server là một trong những giải pháp thay thế Microsoft Exchange đầu tiên được cung cấp cho các doanh nghiệp trên toàn thế giới. Nó đã được phát triển với đầu vào liên tục từ các chuyên gia CNTT đang tìm kiếm một máy chủ thư dễ sử dụng, đáng tin cậy và an toàn, không yêu cầu quản trị tốn kém hoặc
Xem phần mềm
Thư rácTitan
Bảo mật email SpamTitan là bộ lọc thư rác email dành cho doanh nghiệp, doanh nghiệp vừa và nhỏ, MSP và trường học. Bảo mật email SpamTitan chặn thư rác cũng như các cuộc tấn công lừa đảo và ban ngày, vi-rút, phần mềm độc hại, ransomware và các mối đe dọa email khác. Giúp kiểm soát luồng thư, dọn dẹp và bảo vệ khỏi thư không mong muốn
Nhiều nhà phát triển PHP cần gửi email từ mã của họ. Hàm PHP duy nhất hỗ trợ trực tiếp điều này là
...
try {
...
} catch [Exception $e] {
//$e is an instance of PHPMailer\PHPMailer\Exception
echo $e->errorMessage[];
} catch [\Exception $e] {
//$e is an instance of the PHP built-in Exception class
echo $e->getMessage[];
}
3. Tuy nhiên, nó không cung cấp bất kỳ hỗ trợ nào để sử dụng các tính năng phổ biến như mã hóa, xác thực, tin nhắn HTML và tệp đính kèmĐịnh dạng email chính xác khó đến mức đáng ngạc nhiên. Có vô số tiêu chuẩn chồng chéo [và xung đột], đòi hỏi phải tuân thủ chặt chẽ các quy tắc mã hóa và định dạng cực kỳ phức tạp – phần lớn mã mà bạn tìm thấy trực tuyến sử dụng trực tiếp hàm
...
try {
...
} catch [Exception $e] {
//$e is an instance of PHPMailer\PHPMailer\Exception
echo $e->errorMessage[];
} catch [\Exception $e] {
//$e is an instance of the PHP built-in Exception class
echo $e->getMessage[];
}
3 hoàn toàn sai, nếu không muốn nói là không an toànHàm PHP
...
try {
...
} catch [Exception $e] {
//$e is an instance of PHPMailer\PHPMailer\Exception
echo $e->errorMessage[];
} catch [\Exception $e] {
//$e is an instance of the PHP built-in Exception class
echo $e->getMessage[];
}
3 thường gửi qua máy chủ thư cục bộ, thường được đặt trước bởi tệp nhị phân ...
try {
...
} catch [Exception $e] {
//$e is an instance of PHPMailer\PHPMailer\Exception
echo $e->errorMessage[];
} catch [\Exception $e] {
//$e is an instance of the PHP built-in Exception class
echo $e->getMessage[];
}
6 trên nền tảng Linux, BSD và macOS, tuy nhiên, Windows thường không bao gồm máy chủ thư cục bộ; . Mặc dù vậy, hãy lưu ý rằng hàm ...
try {
...
} catch [Exception $e] {
//$e is an instance of PHPMailer\PHPMailer\Exception
echo $e->errorMessage[];
} catch [\Exception $e] {
//$e is an instance of the PHP built-in Exception class
echo $e->getMessage[];
}
3 nên tránh khi có thể; Xin đừng cố gắng tự làm điều đó – nếu bạn không sử dụng PHPMailer, có rất nhiều thư viện tuyệt vời khác mà bạn nên xem trước khi sử dụng thư viện của riêng mình. Hãy thử SwiftMailer , Laminas/Mail, ZetaComponents, v.v.
Giấy phép
Phần mềm này được phân phối theo LGPL 2. 1 giấy phép, cùng với Cam kết hợp tác GPL. Vui lòng đọc GIẤY PHÉP để biết thông tin về tính khả dụng và phân phối phần mềm
Cài đặt & tải
PHPMailer có sẵn trên Packagist [sử dụng phiên bản ngữ nghĩa] và cài đặt qua Composer là cách được khuyến nghị để cài đặt PHPMailer. Chỉ cần thêm dòng này vào tệp
composer require phpmailer/phpmailer1 của bạn
"phpmailer/phpmailer": "^6.7.1"
hoặc chạy
composer require phpmailer/phpmailer
Lưu ý rằng thư mục
composer require phpmailer/phpmailer2 và tập lệnh
composer require phpmailer/phpmailer3 được tạo bởi Composer;
Nếu bạn muốn sử dụng lớp xác thực XOAUTH2 của Gmail, bạn cũng sẽ cần thêm một phụ thuộc vào gói
composer require phpmailer/phpmailer4 trong
composer require phpmailer/phpmailer1 của mình
Ngoài ra, nếu bạn không sử dụng Trình soạn thảo, bạn có thể tải xuống PHPMailer dưới dạng tệp zip, [lưu ý rằng tài liệu và ví dụ không được bao gồm trong tệp zip], sau đó sao chép nội dung của thư mục PHPMailer vào một trong các thư mục
composer require phpmailer/phpmailer6 được chỉ định trong
src/PHPMailer.php
src/Exception.php
src/SMTP.php
1Nếu bạn không sử dụng lớp
composer require phpmailer/phpmailer7 một cách rõ ràng [có thể là không], thì bạn không cần dòng
composer require phpmailer/phpmailer8 cho lớp SMTP. Ngay cả khi bạn không sử dụng ngoại lệ, bạn vẫn cần tải lớp
composer require phpmailer/phpmailer9 vì nó được sử dụng nội bộ
Phiên bản kế thừa
PHPMailer 5. 2 [tương thích với PHP 5. 0 — 7. 0] không còn được hỗ trợ, ngay cả đối với các bản cập nhật bảo mật. Bạn sẽ tìm thấy phiên bản mới nhất của 5. 2 trong 5. 2 nhánh ổn định. Nếu bạn đang sử dụng PHP 5. 5 trở lên [mà bạn nên là], hãy chuyển sang 6. x phát hành
Nâng cấp từ 5. 2
Thay đổi lớn nhất là các tệp nguồn hiện nằm trong thư mục
src/PHPMailer.php
src/Exception.php
src/SMTP.php
10 và PHPMailer hiện khai báo không gian tên src/PHPMailer.php
src/Exception.php
src/SMTP.php
11. Điều này có một số tác dụng quan trọng – hãy đọc hướng dẫn nâng cấp để biết thêm chi tiếtcài đặt tối thiểu
Mặc dù việc cài đặt toàn bộ gói theo cách thủ công hoặc bằng Composer rất đơn giản, thuận tiện và đáng tin cậy, nhưng bạn có thể chỉ muốn đưa các tệp quan trọng vào dự án của mình. Ít nhất bạn sẽ cần src/PHPMailer. php. Nếu bạn đang sử dụng SMTP, bạn sẽ cần src/SMTP. php và nếu bạn đang sử dụng POP trước SMTP [rất khó xảy ra. ], bạn sẽ cần src/POP3. php. Bạn có thể bỏ qua thư mục ngôn ngữ nếu bạn không hiển thị lỗi cho người dùng và có thể thực hiện với các lỗi chỉ có tiếng Anh. Nếu bạn đang sử dụng XOAUTH2, bạn sẽ cần src/OAuth. php cũng như các phụ thuộc Trình soạn thảo cho các dịch vụ bạn muốn xác thực. Thực sự, việc sử dụng Composer dễ dàng hơn nhiều
Một ví dụ đơn giản
src/PHPMailer.php
src/Exception.php
src/SMTP.php
7Bạn sẽ tìm thấy nhiều thứ để thử trong thư mục ví dụ, bao gồm nhiều tình huống phổ biến bao gồm gửi qua Gmail, tạo biểu mẫu liên hệ, gửi đến danh sách gửi thư, v.v.
Nếu bạn đang sử dụng lại phiên bản [e. g. khi gửi đến danh sách gửi thư], bạn có thể cần xóa danh sách người nhận để tránh gửi thư trùng lặp. Xem ví dụ về danh sách gửi thư để được hướng dẫn thêm
Đó là nó. Bây giờ bạn đã sẵn sàng sử dụng PHPMailer
bản địa hóa
PHPMailer mặc định là tiếng Anh, nhưng trong thư mục ngôn ngữ, bạn sẽ tìm thấy nhiều bản dịch cho các thông báo lỗi PHPMailer mà bạn có thể gặp phải. Tên tệp của chúng chứa mã ngôn ngữ ISO 639-1 cho bản dịch, ví dụ:
src/PHPMailer.php
src/Exception.php
src/SMTP.php
12 cho tiếng Pháp. Để chỉ định một ngôn ngữ, bạn cần cho PHPMailer biết nên sử dụng ngôn ngữ nào, như thế nàysrc/PHPMailer.php
src/Exception.php
src/SMTP.php
9Chúng tôi hoan nghênh các chỉnh sửa và ngôn ngữ mới – nếu bạn đang tìm kiếm các chỉnh sửa, hãy chạy PHPMailerLangTest. php trong thư mục kiểm tra và nó sẽ hiển thị bất kỳ bản dịch nào bị thiếu
Tài liệu
Bắt đầu đọc tại wiki GitHub. Nếu bạn gặp sự cố, hãy xem hướng dẫn khắc phục sự cố vì nó được cập nhật thường xuyên
Có thể tìm thấy các ví dụ về cách sử dụng PHPMailer cho các tình huống phổ biến trong thư mục ví dụ. Nếu bạn đang tìm kiếm một điểm khởi đầu tốt, chúng tôi khuyên bạn nên bắt đầu với ví dụ về Gmail
Để giảm dấu chân mã được triển khai của PHPMailer, các ví dụ sẽ không được bao gồm nếu bạn tải PHPMailer qua Trình soạn thảo hoặc qua tải xuống tệp zip của GitHub, vì vậy bạn sẽ cần sao chép kho lưu trữ git hoặc sử dụng các liên kết ở trên để truy cập trực tiếp vào các ví dụ
Tài liệu API được tạo hoàn chỉnh có sẵn trực tuyến
Bạn có thể tạo tài liệu cấp API hoàn chỉnh bằng cách chạy
src/PHPMailer.php
src/Exception.php
src/SMTP.php
13 trong thư mục cấp cao nhất và tài liệu sẽ xuất hiện trong thư mục src/PHPMailer.php
src/Exception.php
src/SMTP.php
14, mặc dù bạn sẽ cần cài đặt PHPDocumentor. Bạn có thể thấy bài kiểm tra đơn vị là một tài liệu tham khảo tốt về cách thực hiện các thao tác khác nhau, chẳng hạn như mã hóaNếu tài liệu không đề cập đến những gì bạn cần, hãy tìm kiếm nhiều câu hỏi trên Stack Overflow và trước khi đặt câu hỏi về "Lỗi SMTP. Không thể kết nối với máy chủ SMTP. ", hãy đọc hướng dẫn khắc phục sự cố
bài kiểm tra
Các bài kiểm tra PHPMailer sử dụng PHPUnit 9, với một polyfill để cho phép các bài kiểm tra kiểu 9 chạy trên các phiên bản PHPUnit và PHP cũ hơn
Nếu điều này không trôi qua, bạn có thể làm gì để giúp đỡ?
Bảo vệ
Vui lòng tiết lộ bất kỳ lỗ hổng nào được tìm thấy một cách có trách nhiệm – báo cáo riêng các vấn đề bảo mật cho người bảo trì
Xem tư vấn bảo mật của SECURITY và PHPMailer trên GitHub
Đóng góp
Vui lòng gửi báo cáo lỗi, đề xuất và yêu cầu kéo tới trình theo dõi vấn đề GitHub
Chúng tôi đặc biệt quan tâm đến việc khắc phục các trường hợp cạnh, mở rộng phạm vi kiểm tra và cập nhật bản dịch
Nếu bạn tìm thấy lỗi trong tài liệu hoặc muốn thêm nội dung nào đó, hãy tiếp tục và sửa đổi wiki – bất kỳ ai cũng có thể chỉnh sửa nó
Nếu bạn có bản sao git từ trước khi chuyển sang tổ chức PHPMailer GitHub, bạn sẽ cần cập nhật bất kỳ URL từ xa nào tham chiếu đến vị trí GitHub cũ bằng một lệnh như thế này từ trong bản sao của bạn
...
try {
...
} catch [Exception $e] {
//$e is an instance of PHPMailer\PHPMailer\Exception
echo $e->errorMessage[];
} catch [\Exception $e] {
//$e is an instance of the PHP built-in Exception class
echo $e->getMessage[];
}
2Vui lòng không sử dụng các dự án SourceForge hoặc Google Code nữa;
Sự tài trợ
Thời gian và tài nguyên phát triển cho PHPMailer được cung cấp bởi Smartmessages. net, hệ thống tiếp thị email ưu tiên quyền riêng tư duy nhất trên thế giới
Mọi sự đóng góp đều rất được hoan nghênh, dù là bia🍺, áo phông👕 hay tiền mặt lạnh💰. Tài trợ thông qua GitHub là một cách đơn giản và thuận tiện để nói "cảm ơn" với những người bảo trì và cộng tác viên của PHPMailer – chỉ cần nhấp vào nút "Nhà tài trợ" trên trang dự án. Nếu công ty của bạn sử dụng PHPMailer, hãy cân nhắc tham gia chương trình hỗ trợ doanh nghiệp của Tidelift
PHPMailer dành cho doanh nghiệp
Có sẵn như là một phần của Đăng ký Tidelift
Những người bảo trì PHPMailer và hàng nghìn gói khác đang làm việc với Tidelift để cung cấp hỗ trợ thương mại và bảo trì cho các gói nguồn mở mà bạn sử dụng để xây dựng ứng dụng của mình. Tiết kiệm thời gian, giảm rủi ro và cải thiện tình trạng của mã, đồng thời trả tiền cho người bảo trì các gói chính xác mà bạn sử dụng. Tìm hiểu thêm