Cài đặt php-imap

theo mặc định, IMAP cho PHP bị hủy kích hoạt. Trước tiên, bạn cần kiểm tra xem PHP IMAP đã được cài đặt hay chưa. hãy kiểm tra bằng hàm phpinfo()

Kiểm tra PHP IMAP đã được cài đặt chưa

1) Tạo một tệp mới trong thư mục gốc của bạn có tên là “whatever. php” và đặt mã nhỏ bên dưới vào tệp này

Ghi chú. không nên đặt tên tệp là “phpinfo. php”, bởi vì một số kẻ tấn công tìm kiếm các tệp có tên đó trên máy chủ của bạn. vì vậy, hãy giữ nó trong tâm trí của bạn
2) Bây giờ, hãy chạy tệp này từ trình duyệt yêu thích của bạn
3) Bạn có thể kiểm tra tương tự như snap bên dưới

Cài đặt php-imap
thông tin php()

Nếu nó chưa được cài đặt, đừng lo lắng, hãy làm theo các bước dưới đây

Kích hoạt IMAP trong XAMPP

1) chuyển đến tệp \xampp\php\php. ini và mở php. ini trong trình chỉnh sửa của bạn
2) tìm ;extension=php_imap. dll
3) Xóa dấu chấm phẩy khỏi ;extension=php_imap. dll
4) Bây giờ, nó sẽ giống như extension=php_imap. dll
5) Lưu tệp của bạn và khởi động lại máy chủ xampp

Kích hoạt IMAP trong Linux

Trong Linux, bạn cần cài đặt mô-đun PHP IMAP theo các bước sau
1) Mở thiết bị đầu cuối của bạn
2) Chạy lệnh bên dưới

sudo apt-get cài đặt php5-imap

3) Để bật IMAP, bạn có thể chạy lệnh bên dưới

4) Khởi động lại máy chủ apache bằng lệnh sau


Cài đặt IMAP trên Ubuntu cho PHP 7. 1

1) Chạy lệnh bên dưới

sudo apt cài đặt php7. 1-hình ảnh

2) đừng quên khởi động lại apache

sudo systemctl khởi động lại apache2

Cảm ơn thời gian của bạn, để biết về tôi

Xin chào, tôi là Vijay Poshiya. 🙂

Đây là mô tả nhỏ của tôi về sự chú ý của bạn trên blog của tôi và của tôi. Tôi ở đây để giúp bạn lập trình PHP. Tôi có thể cung cấp cho bạn một nền tảng hướng dẫn làm bánh nơi một chương trình phức tạp có thể giúp bạn dễ dàng hơn. Tôi cũng sẽ cung cấp cho bạn các bộ sưu tập nhiệm vụ hiếm hoi qua internet

Trong trường hợp chúng ta cần sử dụng chức năng về email thông qua các Nhà cung cấp Email (Gmail, Yandex, Yahoo, AOL,. ) , thì  PHP IMAP là một giải pháp tốt nhất  nó là một phần mở rộng của PHP để lấy thư từ hệ thống. Trong bài viết này mình sẽ sử dụng thư viện php-imap/php-imap

Cài đặt

  1. Nếu chưa cài đặt thư viện php-imap, bạn có thể cài đặt bằng câu lệnh sau (dấu * là phiên bản php muốn cài đặt)
sudo apt-get install php*-imap php*-mbstring php*-mcrypt && sudo apache2ctl graceful

Để chắc chắn, bạn có thể sử dụng phpinfo() để kiểm tra xem thư viện đã được kích hoạt chưa

  1. Cài đặt gói php-imap/php-imap từ github
composer require php-imap/php-imap
Tính năng hỗ trợ
  • Kết nối với hộp thư bằng POP3 / IMAP / NNTP, sử dụng phần mở rộng PHP IMAP
  • Nhận email có tệp đính kèm và hình ảnh nội tuyến
  • Nhận email đã được lọc hoặc sắp xếp theo tiêu chí tùy chỉnh
  • Đánh dấu email là đã thấy / chưa nhìn thấy
  • Xóa email
  • Quản lý các hộp thư mục
Start
  1. Tạo di chuyển để lưu email đã đọc,m ở đây mình tạo 1 bảng có tên 'mails' bao gồm các trường như sau
    increments('id');
                $table->bigInteger("mid"); // mail ID
                $table->string('messageId')->unique(); // message id
    			$table->integer('user_server'); // id of curent server
                $table->string('references'); // message id
                $table->string('in_reply_to'); // message id
                $table->dateTime("date");
                $table->string("subject")->nullable();
                $table->string("fromName")->nullable();
                $table->string("fromAddress")->nullable();
                $table->string("to")->nullable();
                $table->string("cc")->nullable();
                $table->string("reply")->nullable();
                $table->text("plain")->nullable();
                $table->text("html")->nullable();
                $table->string('folder')->nullable();
                $table->integer('mess_references')->default(0);
    
    			$table->timestamps();
    		});
    	}
    
    
    	/**
    	 * Reverse the migrations.
    	 *
    	 * @return void
    	 */
    	public function down()
    	{
    		Schema::drop('mails');
    	}
    
    }
    ​
  2. Tạo bảng 'mail_attachments' để lưu các tệp tin từ thư đã đọc
    increments('id');
    			$table->integer("mail_id")->unsigned();
                $table->string("aid")->unique();
                $table->string("name")->nullable();
                $table->string("path")->nullable();
    
    			$table->timestamps();
    		});
    	}
    
    
    	/**
    	 * Reverse the migrations.
    	 *
    	 * @return void
    	 */
    	public function down()
    	{
    		Schema::drop('mail_attachments');
    	}
    
    }
    ​
  3. Tạo lệnh 'mails. GetMail' to connect with server mail , read mail and save into database
    [email protected]', 'XXXX', public_path()."/uploads/mail-attachments/", 'UTF-8');
            $mailIds = $mailbox->searchMailBox('ALL');
            // }
            if(!$mailIds) {
                $this->info("No mail!");
            } else {
                $list_message = $mailbox->getMailsInfo($mailIds);
                $check_references = Mail::where('user_server', 1)->pluck('messageId', 'id')->toArray();
                foreach ($list_message as  $value) {
                    if(Mail::where("messageId", $value->message_id)->count() == 0) {
                        $getMail = $mailbox->getMail($value->uid);
    
                        $ccs = [];
                        foreach($getMail->cc as $ccMail => $ccName) {
                            $ccs[] = $ccName."(".$ccMail.")";
                        }
                        $replys = [];
                        foreach($getMail->replyTo as $replyMail => $replyName) {
                            $replys[] = $replyName."(".$replyMail.")";
                        }
                        $mess_references = 0;
                        $current_references = explode(' ', $value->references??'');
                        if(count($current_references) > 0 && count($check_references) > 0) {
                            foreach ($check_references as $key => $ref) {
                                if($current_references[0] == $ref) {
                                    $mess_references = $key;
                                }
                            }
                        }
                        $mail = new Mail;
                        $mail->mid = $getMail->id;
                        $mail->messageId = $value->message_id;
                        $mail->user_server = 1;
                        $mail->references = $value->references ?? '';
                        $mail->in_reply_to = $value->in_reply_to ?? '';
                        $mail->date = date('Y-m-d H:i:s', strtotime($value->date));
                        $mail->subject = $getMail->subject ?? '';
                        $mail->fromName = $getMail->fromName ?? '';
                        $mail->fromAddress = $getMail->fromAddress ?? '';
                        $mail->to = $value->to ?? '';
                        $mail->cc = implode(",", $ccs);
                        $mail->reply = implode(",", $replys);
                        $mail->plain = $getMail->textPlain ?? '';
                        $mail->html = json_encode($getMail->textHtml ?? '');
                        $mail->folder = 'inbox';
                        $mail->mess_references = $mess_references ?? 0;
                        $mail->save();
    
                        $check_references[$mail->id] = $value->message_id;
    
                        foreach($getMail->getAttachments() as $getAttachment) {
                            $attachment = new MailAttachment();
                            $attachment->aid = $getAttachment->id;
                            $attachment->name = $getAttachment->name;
                            $attachment->path = $getAttachment->filePath;
                            $attachment->mail_id = $mail->id;
                            $attachment->save();
                        }
    
                        $this->info("New Mail:".$mail->subject);
                    }
                }
            }
            \Log::info('End get inbox');
    
        }
    }
    ​
  4. Kết quả
    DUY [email protected] MINGW64 /d/laragon/www/sudo-mail
    $ php artisan mails:GetMail
    New Mail:MaiI, messenger and cloud storage for files: welcome to Yandex.Connect!
    New Mail: [Slack] Notifications from the Sudo E-Convnerce workspace
    New Mail: Xác nhận thanh toán​
kết luận

Như vậy với những thao tác đơn giản mình có thể hoàn toàn đọc thư và lưu thư về cơ sở dữ liệu để dễ dàng sử dụng