set_time_limit[4000];
// Connect to gmail
$imapPath = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = '';
$password = 'your_gmail_password';
// try to connect
$inbox = imap_open[$imapPath,$username,$password] or die['Cannot connect to Gmail: ' . imap_last_error[]];
/* ALL - return all messages matching the rest of the criteria
ANSWERED - match messages with the \\ANSWERED flag set
BCC "string" - match messages with "string" in the Bcc: field
BEFORE "date" - match messages with Date: before "date"
BODY "string" - match messages with "string" in the body of the message
CC "string" - match messages with "string" in the Cc: field
DELETED - match deleted messages
FLAGGED - match messages with the \\FLAGGED [sometimes referred to as Important or Urgent] flag set
FROM "string" - match messages with "string" in the From: field
KEYWORD "string" - match messages with "string" as a keyword
NEW - match new messages
OLD - match old messages
ON "date" - match messages with Date: matching "date"
RECENT - match messages with the \\RECENT flag set
SEEN - match messages that have been read [the \\SEEN flag is set]
SINCE "date" - match messages with Date: after "date"
SUBJECT "string" - match messages with "string" in the Subject:
TEXT "string" - match messages with text "string"
TO "string" - match messages with "string" in the To:
UNANSWERED - match messages that have not been answered
UNDELETED - match messages that are not deleted
UNFLAGGED - match messages that are not flagged
UNKEYWORD "string" - match messages that do not have the keyword "string"
UNSEEN - match messages which have not been read yet*/
// search and get unseen emails, function will return email ids
$emails = imap_search[$inbox,'UNSEEN'];
$output = '';
foreach[$emails as $mail] {
$headerInfo = imap_headerinfo[$inbox,$mail];
$output .= $headerInfo->subject.'
';
$output .= $headerInfo->toaddress.'
';
$output .= $headerInfo->date.'
';
$output .= $headerInfo->fromaddress.'
';
$output .= $headerInfo->reply_toaddress.'
';
$emailStructure = imap_fetchstructure[$inbox,$mail];
if[!isset[$emailStructure->parts]] {
$output .= imap_body[$inbox, $mail, FT_PEEK];
} else {
//
}
echo $output;
$output = '';
}
// colse the connection
imap_expunge[$inbox];
imap_close[$inbox];
For using this you need to install and enable
apt-get install php5-imap
1You can install the PHP5 IMAP module with this command :
apt-get install php5-imap
However it’s not enabled by default so enable it with:
php5enmod imap
To see the changes ,restart Apache
service apache2 restart
For Windows with Xampp7 and above,
Go to php.ini, Remove the semicolon,php.ini, Remove the semicolon,
;extension=imap
Trong trường hợp chúng ta cần sử dụng chức năng về email thông qua các Email Provider [Gmail, Yandex, Yahoo, AOL, ...] , thì PHP IMAP là một giải pháp tốt nhất nó một extension của PHP để lấy mail 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
- Nếu chưa cài đặt thư viện php-imap thì 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 thì bạn có thể sử dụng phpinfo[] để kiểm tra xem thư viện đã được kích hoạt chưa
- Cài đặt php-imap/php-imap package 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 thư mục hộp thưuản lý các thư mục hộp thư
Bắt đầu
- Tạo migrations để lưu email được đọc,m ở đây mình tạo 1 bảng có tên 'mails' gồm các trường như sau: