Здравствуйте! Есть скрипт сборщика почты, он без проблем собирает её, но только из INBOX, а в этой папке есть ещё и ярлыки. Если просматривать содержимое входящих
$list = imap_getmailboxes($mbox, "{imap.gmail.com:993/imap/ssl}", "*");
то var_dump мне показывает такое:
array(18) {
[0] =>
class stdClass#1 (3) {
public $name =>
string(34) "{imap.gmail.com:993/imap/ssl}INBOX"
public $attributes =>
int(64)
public $delimiter =>
string(1) "/"
}
[1] =>
class stdClass#2 (3) {
public $name =>
string(31) "{imap.gmail.com:993/imap/ssl}PL"
public $attributes =>
int(32)
public $delimiter =>
string(1) "/"
}
[2] =>
class stdClass#3 (3) {
public $name =>
string(36) "{imap.gmail.com:993/imap/ssl}PL/PLC0"
public $attributes =>
int(32)
public $delimiter =>
string(1) "/"
}
[3] =>
class stdClass#4 (3) {
public $name =>
string(147) "{imap.gmail.com:993/imap/ssl}PL/PLC0/&BCMEHwQhBBcEHQ- &BBwEGAQgBBMEHgQgBB4EFAQhBCwEGgQeBBMEHg- &BCA--&BB0EIw- &BB8EHgQbBCI-.&BB4EEQQb-. 12B14000867"
public $attributes =>
int(64)
public $delimiter =>
string(1) "/"
}
Перепробовал разные варианты, но выбирать из этих вот папок (PLC0 в частности) скрипт никак не желает... Подскажите пожалуйста, как можно заставить скрипт читать и из ярлыков Gmail, если это вообще реально...
Спасибо заранее!
1. l_2001 - 26 Мая, 2016 - 13:47:42 - перейти к сообщению
2. Viper - 26 Мая, 2016 - 15:24:28 - перейти к сообщению
Ярлыки это не папки. Т.е. физически их нет на сервере. Можно только из INBOX по ALL получить всё сразу и отфильтровать.
3. l_2001 - 27 Мая, 2016 - 08:53:50 - перейти к сообщению
Viper пишет:
Ярлыки это не папки. Т.е. физически их нет на сервере. Можно только из INBOX по ALL получить всё сразу и отфильтровать.
Вы правы, прочитал вчера где-то, но всё-же вопрос остался... Строка коннекта такая:
$mail = imap_open("{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX", $user, $password);
Как-бы ничего военного, обычная, но почему она не вычитывает всё содержимое из INBOXа? Может быть нужно ещё что-то?
4. Viper - 27 Мая, 2016 - 11:05:45 - перейти к сообщению
l_2001 пишет:
код приведите.
Как-бы ничего военного, обычная, но почему она не вычитывает всё содержимое из INBOXа? Может быть нужно ещё что-то?
5. l_2001 - 27 Мая, 2016 - 11:16:59 - перейти к сообщению
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?PHP
- require_once "func.php";//подключаем функции
- require_once "connect.php";//подключаем настройки к MySQL
- wr("\n=============================\n");
- $lock = "reader.lock";
- wr("shutdown");
- });
- wr("busy\n");//пишем в лог, что занято
- }else{
- if($aborted){
- wr("Aborted\n");
- }
- $sql = "SELECT * FROM mailboxes WHERE is_deleted = false";
- $mailbox_id = $row['id'];
- $host = $row['host'];//адрес почтового сервера
- $port = $row['port'];//порт почтового сервера
- $user = $row['email'];//имя пользователя (почтовый ящик)
- $password = $row['password'];//пароль к почтовому ящику
- $last_uid = $row['last_message_uid'];//uid последнего считанного сообщения
- $ssl = $row['is_ssl'] ? "/ssl" : "";
- $mail_user_name, $mail_passport);
- $conn = "{{$host}:{$port}{$ssl}/novalidate-cert}";
- wr("Read $user, conn = $conn");
- if(!$mail){
- continue;//переходим к следующему ящику
- }
- $uid_from = $last_uid + 1;
- $uid_to = 2147483647;
- $range = "$uid_from:$uid_to";
- $message_uid = -1;
- //перебираем сообщения
- foreach($arr as $obj){
- $message_uid = $obj->uid;
- wr("add message $message_uid");
- $sql = "INSERT INTO messages(mailbox_id,uid,create_date,is_ready)
- VALUES($mailbox_id,$message_uid,now(),0)";
- }
- if($message_uid != - 1){
- wr("last message uid = $message_uid");
- $sql = "UPDATE mailboxes
- SET last_message_uid = $message_uid
- WHERE id = $mailbox_id";
- }else{
- //нет новых сообщений
- wr("no new messages");
- }
- }
- }
- ?>