Webklex/php-imap
PHP-IMAP là trình bao bọc cho giao tiếp IMAP phổ biến mà không cần cài đặt/bật mô-đun php-imap. Giao thức được tích hợp hoàn toàn và do đó hỗ trợ hoạt động IMAP IDLE cũng như quy trình xác thực oAuth "mới". Bạn có thể bật mô-đun use Webklex\PHPIMAP\ClientManager; use Webklex\PHPIMAP\Client; $cm = new ClientManager('path/to/config/imap.php'); // or use an array of options instead $cm = new ClientManager($options = []); /** @var \Webklex\PHPIMAP\Client $client */ $client = $cm->account('account_identifier'); // or create a new instance manually $client = $cm->make([ 'host' => 'somehost.com', 'port' => 993, 'encryption' => 'ssl', 'validate_cert' => true, 'username' => 'username', 'password' => 'password', 'protocol' => 'imap' ]); //Connect to the IMAP Server $client->connect(); //Get all Mailboxes /** @var \Webklex\PHPIMAP\Support\FolderCollection $folders */ $folders = $client->getFolders(); //Loop through every Mailbox /** @var \Webklex\PHPIMAP\Folder $folder */ foreach($folders as $folder){ //Get all Messages of the current Mailbox $folder /** @var \Webklex\PHPIMAP\Support\MessageCollection $messages */ $messages = $folder->messages()->all()->get(); /** @var \Webklex\PHPIMAP\Message $message */ foreach($messages as $message){ echo $message->getSubject().'1 để xử lý các trường hợp cạnh, cải thiện chất lượng giải mã tin nhắn và được yêu cầu nếu bạn muốn sử dụng các giao thức cũ như pop3 Show Wiki. webklex/php-imap/wiki Trình bao bọc Laravel. webklex/laravel-imap Mục lụcCài đặt1. ) Cài đặt module giải mã sudo apt-get install php*-mbstring php*-mcrypt && sudo apache2ctl graceful 1. 1. ) (tùy chọn) Cài đặt mô-đun php-imap nếu bạn gặp sự cố mã hóa sudo apt-get install php*-imap && sudo apache2ctl graceful Bạn cũng có thể muốn kiểm tra use Webklex\PHPIMAP\ClientManager; use Webklex\PHPIMAP\Client; $cm = new ClientManager('path/to/config/imap.php'); // or use an array of options instead $cm = new ClientManager($options = []); /** @var \Webklex\PHPIMAP\Client $client */ $client = $cm->account('account_identifier'); // or create a new instance manually $client = $cm->make([ 'host' => 'somehost.com', 'port' => 993, 'encryption' => 'ssl', 'validate_cert' => true, 'username' => 'username', 'password' => 'password', 'protocol' => 'imap' ]); //Connect to the IMAP Server $client->connect(); //Get all Mailboxes /** @var \Webklex\PHPIMAP\Support\FolderCollection $folders */ $folders = $client->getFolders(); //Loop through every Mailbox /** @var \Webklex\PHPIMAP\Folder $folder */ foreach($folders as $folder){ //Get all Messages of the current Mailbox $folder /** @var \Webklex\PHPIMAP\Support\MessageCollection $messages */ $messages = $folder->messages()->all()->get(); /** @var \Webklex\PHPIMAP\Message $message */ foreach($messages as $message){ echo $message->getSubject().'2 nếu tiện ích mở rộng được bật 2. ) Bây giờ hãy cài đặt gói PHP-IMAP bằng cách chạy lệnh sau composer require webklex/php-imap 3. ) Tạo tệp cấu hình tùy chỉnh của riêng bạn như config/imap. php Cấu hìnhgiao thức được hỗ trợ
Các phương pháp mã hóa sau đây được hỗ trợ
Cấu hình/imap chi tiết. cấu hình php
Cách sử dụngVí dụ sử dụng cơ bảnĐây là một ví dụ cơ bản, sẽ lặp lại tất cả các Thư trong tất cả các thư mục imap và sẽ chuyển mọi thư vào INBOX. đọc. Xin lưu ý rằng điều này không nên được thử nghiệm trong cuộc sống thực và chỉ nhằm mục đích tạo ấn tượng về cách mọi thứ hoạt động use Webklex\PHPIMAP\ClientManager; use Webklex\PHPIMAP\Client; $cm = new ClientManager('path/to/config/imap.php'); // or use an array of options instead $cm = new ClientManager($options = []); /** @var \Webklex\PHPIMAP\Client $client */ $client = $cm->account('account_identifier'); // or create a new instance manually $client = $cm->make([ 'host' => 'somehost.com', 'port' => 993, 'encryption' => 'ssl', 'validate_cert' => true, 'username' => 'username', 'password' => 'password', 'protocol' => 'imap' ]); //Connect to the IMAP Server $client->connect(); //Get all Mailboxes /** @var \Webklex\PHPIMAP\Support\FolderCollection $folders */ $folders = $client->getFolders(); //Loop through every Mailbox /** @var \Webklex\PHPIMAP\Folder $folder */ foreach($folders as $folder){ //Get all Messages of the current Mailbox $folder /** @var \Webklex\PHPIMAP\Support\MessageCollection $messages */ $messages = $folder->messages()->all()->get(); /** @var \Webklex\PHPIMAP\Message $message */ foreach($messages as $message){ echo $message->getSubject().' Thư mục / Hộp thưLiệt kê tất cả các thư mục có sẵn sudo apt-get install php*-mbstring php*-mcrypt && sudo apache2ctl graceful2 Nhận một thư mục cụ thể sudo apt-get install php*-imap && sudo apache2ctl graceful2 oAuthVui lòng xem bài viết wiki để thiết lập thư gmail/google Ví dụ oAuth cơ bản use Webklex\PHPIMAP\ClientManager; use Webklex\PHPIMAP\Client; $cm = new ClientManager('path/to/config/imap.php'); // or use an array of options instead $cm = new ClientManager($options = []); /** @var \Webklex\PHPIMAP\Client $client */ $client = $cm->account('account_identifier'); // or create a new instance manually $client = $cm->make([ 'host' => 'somehost.com', 'port' => 993, 'encryption' => 'ssl', 'validate_cert' => true, 'username' => 'username', 'password' => 'password', 'protocol' => 'imap' ]); //Connect to the IMAP Server $client->connect(); //Get all Mailboxes /** @var \Webklex\PHPIMAP\Support\FolderCollection $folders */ $folders = $client->getFolders(); //Loop through every Mailbox /** @var \Webklex\PHPIMAP\Folder $folder */ foreach($folders as $folder){ //Get all Messages of the current Mailbox $folder /** @var \Webklex\PHPIMAP\Support\MessageCollection $messages */ $messages = $folder->messages()->all()->get(); /** @var \Webklex\PHPIMAP\Message $message */ foreach($messages as $message){ echo $message->getSubject().'2 nhàn rỗiMỗi khi nhận được tin nhắn mới, máy chủ sẽ thông báo cho máy khách và gửi lại tin nhắn mới composer require webklex/php-imap2 Tìm kiếm tin nhắnTìm kiếm email cụ thể use Webklex\PHPIMAP\ClientManager; use Webklex\PHPIMAP\Client; $cm = new ClientManager('path/to/config/imap.php'); // or use an array of options instead $cm = new ClientManager($options = []); /** @var \Webklex\PHPIMAP\Client $client */ $client = $cm->account('account_identifier'); // or create a new instance manually $client = $cm->make([ 'host' => 'somehost.com', 'port' => 993, 'encryption' => 'ssl', 'validate_cert' => true, 'username' => 'username', 'password' => 'password', 'protocol' => 'imap' ]); //Connect to the IMAP Server $client->connect(); //Get all Mailboxes /** @var \Webklex\PHPIMAP\Support\FolderCollection $folders */ $folders = $client->getFolders(); //Loop through every Mailbox /** @var \Webklex\PHPIMAP\Folder $folder */ foreach($folders as $folder){ //Get all Messages of the current Mailbox $folder /** @var \Webklex\PHPIMAP\Support\MessageCollection $messages */ $messages = $folder->messages()->all()->get(); /** @var \Webklex\PHPIMAP\Message $message */ foreach($messages as $message){ echo $message->getSubject().'6 Bí danh tìm kiếm có sẵn để đọc mã tốt hơn use Webklex\PHPIMAP\ClientManager; use Webklex\PHPIMAP\Client; $cm = new ClientManager('path/to/config/imap.php'); // or use an array of options instead $cm = new ClientManager($options = []); /** @var \Webklex\PHPIMAP\Client $client */ $client = $cm->account('account_identifier'); // or create a new instance manually $client = $cm->make([ 'host' => 'somehost.com', 'port' => 993, 'encryption' => 'ssl', 'validate_cert' => true, 'username' => 'username', 'password' => 'password', 'protocol' => 'imap' ]); //Connect to the IMAP Server $client->connect(); //Get all Mailboxes /** @var \Webklex\PHPIMAP\Support\FolderCollection $folders */ $folders = $client->getFolders(); //Loop through every Mailbox /** @var \Webklex\PHPIMAP\Folder $folder */ foreach($folders as $folder){ //Get all Messages of the current Mailbox $folder /** @var \Webklex\PHPIMAP\Support\MessageCollection $messages */ $messages = $folder->messages()->all()->get(); /** @var \Webklex\PHPIMAP\Message $message */ foreach($messages as $message){ echo $message->getSubject().'7 Tất cả các phương pháp truy vấn / tìm kiếm có sẵn có thể được tìm thấy ở đây. Truy vấn. lớp tiêu chí tìm kiếm có sẵn
Thêm thông tin giới hạn kết quảGiới hạn các email yêu cầu sudo apt-get install php*-imap && sudo apache2ctl graceful0 đếm tin nhắnĐếm tất cả các tin nhắn có sẵn phù hợp với tiêu chí tìm kiếm hiện tại sudo apt-get install php*-imap && sudo apache2ctl graceful1 phân trangĐánh trang một truy vấn sudo apt-get install php*-imap && sudo apache2ctl graceful2 Phân trang một bộ sưu tập tin nhắn sudo apt-get install php*-imap && sudo apache2ctl graceful3 Xem ví dụ về danh sách được phân trang sudo apt-get install php*-imap && sudo apache2ctl graceful4 sudo apt-get install php*-imap && sudo apache2ctl graceful5
Xem ví dụBạn có thể tìm thấy một vài ví dụ về lưỡi dao trong /examples Tìm nạp một tin nhắn cụ thểNhận một tin nhắn cụ thể bằng uid (Xin lưu ý rằng uid không phải là duy nhất và có thể thay đổi) sudo apt-get install php*-imap && sudo apache2ctl graceful6 cờ tin nhắnGắn cờ hoặc "bỏ gắn cờ" một thư sudo apt-get install php*-imap && sudo apache2ctl graceful7 Đánh dấu tất cả thư là "đã đọc" trong khi tìm nạp sudo apt-get install php*-imap && sudo apache2ctl graceful8 Không đánh dấu tất cả thư là "đã đọc" trong khi tìm nạp sudo apt-get install php*-imap && sudo apache2ctl graceful9 tệp đính kèmLưu tệp đính kèm tin nhắn composer require webklex/php-imap0 Tìm nạp nâng caoTìm nạp tin nhắn mà không cần tìm nạp nội dung (giảm tải) composer require webklex/php-imap1 Tìm nạp thư mà không tìm nạp nội dung, cờ và tệp đính kèm (giảm tải) composer require webklex/php-imap2 Thay đổi thứ tự tìm nạp tin nhắn composer require webklex/php-imap3 Sự kiệnCác sự kiện sau đây có sẵn
Tạo và đăng ký sự kiện tùy chỉnh của riêng bạn composer require webklex/php-imap4 hoặc đặt nó trong tệp cấu hình của bạn bên dưới sudo apt-get install php*-imap && sudo apache2ctl graceful24 đắp mặt nạPHP-IMAP đã đi kèm với hai mặt nạ mặc định và Phiên bản đeo mặt nạ phải được gọi theo cách thủ công và được thiết kế để thêm chức năng tùy chỉnh Bạn có thể gọi mặt nạ mặc định bằng cách gọi phương thức mặt nạ mà không có bất kỳ đối số nào composer require webklex/php-imap5 Có một số phương pháp có sẵn để đặt mặt nạ mặc định composer require webklex/php-imap6 Cái cuối cùng sẽ không đặt mặt nạ nhưng tạo một phiên bản được che bằng cách sử dụng mặt nạ được cung cấp Bạn cũng có thể đặt mặt nạ mặc định bên trong tệp sudo apt-get install php*-imap && sudo apache2ctl graceful25 của mình bên dưới composer require webklex/php-imap26 Bạn cũng có thể đắp mặt nạ composer require webklex/php-imap7 Nếu bạn muốn triển khai mặt nạ của riêng mình, chỉ cần mở rộng hoặc triển khai logic mong muốn của bạn composer require webklex/php-imap8 Ví dụ bổ sung có thể được tìm thấy ở đây đặc biệtTìm thư mục chứa thư composer require webklex/php-imap9 Ủng hộNếu bạn gặp phải bất kỳ vấn đề nào hoặc nếu bạn tìm thấy lỗi, vui lòng tạo một vấn đề mới. Tuy nhiên, xin lưu ý rằng có thể mất một chút thời gian để nhận được câu trả lời. Các vấn đề lạc đề, khiếm nhã hoặc lạm dụng sẽ bị xóa mà không cần thông báo trước Nếu bạn cần hỗ trợ thương mại hoặc ngay lập tức, vui lòng gửi thư cho tôi tại github@webklex. com Một thông báo nhỏNếu bạn viết mã nguồn trong vấn đề của mình, vui lòng cân nhắc để định dạng mã nguồn chính xác. Điều này làm cho nó dễ đọc hơn rất nhiều và mọi người có nhiều khả năng nhận xét và giúp đỡ hơn. ) ```php echo 'mã php của bạn. '; ``` sẽ biến thành use Webklex\PHPIMAP\ClientManager; use Webklex\PHPIMAP\Client; $cm = new ClientManager('path/to/config/imap.php'); // or use an array of options instead $cm = new ClientManager($options = []); /** @var \Webklex\PHPIMAP\Client $client */ $client = $cm->account('account_identifier'); // or create a new instance manually $client = $cm->make([ 'host' => 'somehost.com', 'port' => 993, 'encryption' => 'ssl', 'validate_cert' => true, 'username' => 'username', 'password' => 'password', 'protocol' => 'imap' ]); //Connect to the IMAP Server $client->connect(); //Get all Mailboxes /** @var \Webklex\PHPIMAP\Support\FolderCollection $folders */ $folders = $client->getFolders(); //Loop through every Mailbox /** @var \Webklex\PHPIMAP\Folder $folder */ foreach($folders as $folder){ //Get all Messages of the current Mailbox $folder /** @var \Webklex\PHPIMAP\Support\MessageCollection $messages */ $messages = $folder->messages()->all()->get(); /** @var \Webklex\PHPIMAP\Message $message */ foreach($messages as $message){ echo $message->getSubject().'0 Tính năng & yêu cầu kéoMọi người đều có thể đóng góp cho dự án này. Mọi yêu cầu kéo sẽ được xem xét nhưng nó cũng có thể bị từ chối. Để ngăn chặn công việc không cần thiết, trước tiên hãy cân nhắc tạo một vấn đề về tính năng, nếu bạn dự định thực hiện các thay đổi lớn hơn. Tất nhiên, bạn cũng có thể tạo một vấn đề về tính năng mới nếu bạn chỉ muốn một tính năng;) Tài liệuMethodArgumentsReturnDescriptionsetConfigarray $configselfĐặt cấu hình Máy khách. Hãy xemsudo apt-get install php*-imap && sudo apache2ctl graceful25 để có thêm cảm hứng. getConnectionresource $connectionresourceNhận tài nguyên hình ảnh hiện tạiisConnectedboolXác định xem kết nối có được thiết lập hay không. checkConnectionXác định xem kết nối đã được thiết lập chưa và kết nối nếu không. kết nối Kết nối với máy chủ. kết nối lạiChấm dứt và kết nối lại với máy chủ. ngắt kết nối Ngắt kết nối với máy chủ. getFolderstring $folder_name, $delimiter = nullFolderNhận phiên bản Thư mục theo tên hoặc đường dẫngetFoldersbool $hierarchical, string hoặc null $parent_folderFolderCollectionNhận danh sách thư mục. Nếu thứ tự phân cấp được đặt thành true, nó sẽ tạo một cây thư mục, nếu không, nó sẽ trả về mảng phẳng. openFolderstring hoặc Thư mục $folder, integer $attemptsMở một thư mục nhất định. createFolderstring $namebooleanTạo thư mục mới. getQuotaarrayTruy xuất cài đặt mức hạn ngạch và thống kê sử dụng trên mỗi hộp thưgetQuotaRootstring $quota_rootarrayTruy xuất cài đặt hạn ngạch trên mỗi người dùngexpungeboolXóa tất cả thư được đánh dấu để xóasetTimeoutstring hoặc int $type, int $timeoutbooleanĐặt thời gian chờ cho một số thao tác imap nhất định. 1. mở, 2. Đọc, 3. Viết, 4. ClosegetTimeoutstring hoặc int $typeintKiểm tra hộp thư hiện tạisetDefaultMessageMaskstring $maskselfĐặt lớp mặt nạ thông báo mặc địnhgetDefaultMessageMaskstringLấy tên lớp mặt nạ thông báo mặc định hiện tạisetDefaultAttachmentMaskstring $maskselfĐặt lớp mặt nạ tệp đính kèm mặc địnhgetDefaultAttachmentMaskstringLấy tên lớp mặt nạ tệp đính kèm mặc định hiện tạigetFolderPathstringLấy đường dẫn thư mục hiện tạiMethodArgumentsReturnDescriptionBodyMessagePhân tích nội dung thư . set Childrenarray $ childrenselfĐặt con. xóaXóa Hộp thư hiện tạiđăng kýĐăng ký vào Hộp thư hiện tạiunsubscribeHủy đăng ký khỏi Hộp thư hiện tạiidlecallable$callback(Message $new_message)Không hoạt động thư mục hiện tạimovestring $mailboxDi chuyển hoặc Đổi tên Hộp thư hiện tạirenamestring $mailboxDi chuyển hoặc Đổi tên Hộp thư hiện tạigetStatusarrayTrả về thông tin trạng thái trên hộp thư hiện tạiexaminearrayTrả về thông tin trạng thái trên hộp thư hiện tạiappendMessagestring $ . truy vấn() chuỗi tìm kiếm $charset = 'UTF-8'WhereQueryAlias cho thư mục. query() MethodArgumentsReturnDes mô tảwheremixed $criteria, $value = nullWhereQueryThêm tiêu chí mới cho truy vấn hiện tại hoặc WhereClosure $closure WhereQuery Nếu được hỗ trợ, bạn có thể thực hiện các yêu cầu tìm kiếm mở rộng và WhereClosure $closure WhereQuery Nếu được hỗ trợ, bạn có thể thực hiện các yêu cầu tìm kiếm mở rộng all WhereQueryChọn tất cả các thư hiện có đã trả lờiWhereQueryChọn các thư đã trả lờixóa WhereQueryChọn các thư đã xóanewWhereQueryChọn các thư mớinotWhereQueryKhông chọn các thưoldWhereQueryChọn các thư cũrecentWhereQueryChọn các thư gần đâyseenWhereQuerySelect . )chuỗi văn bản $valueWhereQueryChọn thư khớp với một nội dung văn bản nhất địnhsubjectstring $valueWhereQueryChọn thư khớp với một chủ đề nhất định từ chuỗi $valueWhereQueryChọn thư từ một ngày nhất định trên chuỗi $valueWhereQueryChọn thư vào một ngày nhất địnhchuỗi từ khóa $valueWhereQueryChọn thư khớp với một từ khóa nhất địnhtừchuỗi $valueWhereQueryChọn thư khớp với một người gửi nhất định (Từ. )flaggedstring $valueWhereQueryChọn tin nhắn khớp với một flagccstring đã cho $valueWhereQueryChọn tin nhắn khớp với một người nhận nhất định (CC. )bodystring $valueWhereQueryChọn thư khớp với nội dung HTML đã cho trướcchuỗi $valueWhereQueryChọn thư trước chuỗi ngày tháng cho trướcbccstring $valueWhereQueryChọn thư khớp với người nhận nhất định (BCC. )countintegerĐếm tất cả thư có sẵn khớp với tiêu chí tìm kiếm hiện tạigetMessageCollectionTìm nạp thư với truy vấn hiện tạilimitinteger $limit, integer $page = 1WhereQueryGiới hạn số lượng thư được tìm nạpsetFetchOptionsboolean $fetch_optionsWhereQueryĐặt tùy chọn tìm nạpsetFetchBodyboolean $fetch_bodyWhereQueryĐặt tùy chọn nội dung tìm nạpsetFetchFlagsboolean $fetch_flagsWhereQueryĐặt tùy chọn cờ tìm nạpsetFetchOrderstring $fetch_orderWhereQueryTìm nạp . markAsReadWhereQueryĐánh dấu tất cả thư là "đã đọc" trong khi tìm nạppaginateint $perPage = 5, $page = null, $pageName = 'imap_page'LengthAwarePaginatorPhân trang truy vấn hiện tại. MethodArgumentsReturnDescriptiongetContentstring hoặc nullNhận nội dung tệp đính kèmgetMimeTypestring hoặc nullNhận tệp đính kèm loại mimegetExtensionstring hoặc nullNhận phần mở rộng tệp đính kèm đã đoángetIdstring hoặc nullNhận tệp đính kèm idgetNamestring hoặc nullNhận tên tệp đính kèmgetContentstring hoặc nullNhận nội dung tệp đính kèmsetSizeint hoặc nullNhận kích thước tệp đính kèmgetTypestring hoặc nullNhận loại tệp đính kèmgetDispositionstring hoặc nullNhận tệp đính kèm bố trígetContentTypestring hoặc nullNhận loại nội dung tệp đính kèmavestring $path, string $ Mở rộng Chiếu sáng\Hỗ trợ\Bộ sưu tập. lớp MethodArgumentsReturnDescriptionpaginateint $perPage = 15, $page = null, $pageName = 'page'LengthAwarePaginatorPaginate bộ sưu tập hiện tạiMở rộng Chiếu sáng\Hỗ trợ\Bộ sưu tập. lớp MethodArgumentsReturnDescriptionpaginateint $perPage = 15, $page = null, $pageName = 'page'LengthAwarePaginatorPaginate bộ sưu tập hiện tạiMở rộng Chiếu sáng\Hỗ trợ\Bộ sưu tập. lớp MethodArgumentsReturnDescriptionpaginateint $perPage = 15, $page = null, $pageName = 'page'LengthAwarePaginatorPaginate bộ sưu tập hiện tạiMở rộng Chiếu sáng\Hỗ trợ\Bộ sưu tập. lớp MethodArgumentsReturnDescriptionpaginateint $perPage = 15, $page = null, $pageName = 'page'LengthAwarePaginatorPaginate bộ sưu tập hiện tạiCác vấn đề đã biếtLỗi ErrorSolutionKerberos. Không tìm thấy tệp bộ đệm thông tin xác thực (thử chạy kinit) (. ) Bỏ ghi chú "DISABLE_AUTHENTICATOR" bên trong và sử dụng giao thứcuse Webklex\PHPIMAP\ClientManager; use Webklex\PHPIMAP\Client; $cm = new ClientManager('path/to/config/imap.php'); // or use an array of options instead $cm = new ClientManager($options = []); /** @var \Webklex\PHPIMAP\Client $client */ $client = $cm->account('account_identifier'); // or create a new instance manually $client = $cm->make([ 'host' => 'somehost.com', 'port' => 993, 'encryption' => 'ssl', 'validate_cert' => true, 'username' => 'username', 'password' => 'password', 'protocol' => 'imap' ]); //Connect to the IMAP Server $client->connect(); //Get all Mailboxes /** @var \Webklex\PHPIMAP\Support\FolderCollection $folders */ $folders = $client->getFolders(); //Loop through every Mailbox /** @var \Webklex\PHPIMAP\Folder $folder */ foreach($folders as $folder){ //Get all Messages of the current Mailbox $folder /** @var \Webklex\PHPIMAP\Support\MessageCollection $messages */ $messages = $folder->messages()->all()->get(); /** @var \Webklex\PHPIMAP\Message $message */ foreach($messages as $message){ echo $message->getSubject().'4 Thay đổi nhật kýVui lòng xem CHANGELOG để biết thêm thông tin về những thay đổi gần đây Bảo vệNếu bạn phát hiện ra bất kỳ vấn đề nào liên quan đến bảo mật, vui lòng gửi email tới github@webklex. com thay vì sử dụng trình theo dõi vấn đề |