Что такое код imap_binary

Содержание

Linux.yaroslavl.ru

Учебник РНР
Назад Вперёд

(PHP 3>= 3.0.2, PHP 4)

imap_binary — конвертирует 8-бинтную строку в строку base64.

Описание

string imap_binary (string string)

Конвертирует 8-бинтную строку в строку base64 (в соответствии с RFC2045, Разделом 6.8).

Поддерживает ли протокол IMAP двоичный код внутри многочастного тела?

8-битная текстовая и двоичная почта поддерживается с помощью
[MIME-IMB] кодирование передачи содержимого. Реализации IMAP4rev1 МОГУТ
передавать 8-битные или многооктетные символы в литералах, но СЛЕДУЕТ делать
поэтому только когда идентифицируется [CHARSET].

Хотя определено кодирование тела BINARY, запрещенные двоичные строки не допускаются. «Бинарная строка» — это любая строка с символами NUL. Реализации ДОЛЖНЫ кодировать двоичные данные в текстовую форму, такую как BASE64, перед передачей данных. Строка с избыточным количеством символов CTL МОЖЕТ также считаться двоичной.

Если реализация должна конвертироваться в base64, то почему RFC говорит, что «BINARY body encoding определен». Поскольку каждый раз, когда нам нужно отправлять данные как base64 (или какой-либо другой формат), эффективно двоичный файл не поддерживается. Или я читаю что-то неправильно?

IMAP поддерживает MIME многочастный, могут ли части внутри этого иметь двоичные данные? то есть кодирование передачи контента?

Я новичок в IMAP/HTTP, причина для того, чтобы задать этот вопрос, я должен разработать сервер, который поддерживает как HTTP, так и IMAP, в HTTP-сервере восстанавливать данные в двоичных (HUGE multipart data, с кодировкой передачи контента как двоичные), FETCH можно сделать в IMAP. Проблема в том, что мне нужно анализировать данные и преобразовывать каждую часть внутри multipart в base64, если IMAP не поддерживает двоичный файл. Я думаю, что это серьезная проблема с производительностью.

Ответ, к сожалению, «может быть».

MIME RFC поддерживает двоичный код, но IMAP RFC специально запрещает отправку символов NULL . Вероятно, это связано с тем, что они могут вводить в заблуждение для текстовых парсеров, особенно написанных на C, где NULL имеет значение End of String.

Некоторые IMAP-серверы просто считают тело «мешком байтов», и я сомневаюсь, что некоторые, если вообще есть, действительно перекодируют. Поэтому, если вы попросите все сообщение, вы, вероятно, получите его буквальное содержание.

Если ваши клиенты могут обрабатывать MIME-Binary, вы, вероятно, будете в порядке.

Существует RFC 3516 для расширения IMAP для правильной поддержки BINARY, но это широко не используется.

В качестве примечания: почему вы используете Multipart MIME? Это нечетный выбор реализации для HTTP.

Что такое код imap_binary

Профиль
Группа: Участник
Сообщений: 506
Регистрация: 27.2.2007

Репутация: 0
Всего: 0

Профиль
Группа: Участник
Сообщений: 506
Регистрация: 27.2.2007

Репутация: 0
Всего: 0

А сейчас вот такую ошибку выдает -Warning: mail() [function.mail]: SMTP server response: 501 5.5.4 Invalid Address in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\mail\test.php on line 38

box
Дата 13.5.2007, 14:22 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 6
Всего: 8

После установки расширения, интерпретатор пхп надо перезапустить, чтобы он прочитал новый конфиг.

Неправильно указал адрес — ты его тоже в base64 перевел наверное

WolfON
Дата 13.5.2007, 14:27 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 506
Регистрация: 27.2.2007

Репутация: 0
Всего: 0

конечно же перезапускал сервак ! на хостинге все работает(без каких-либо настроек ), а на локалхост нехочет.

Это сообщение отредактировал(а) PARROT — 13.5.2007, 17:03

box
Дата 13.5.2007, 15:01 (ссылка) | (нет голосов) Загрузка .
Google
Дата 13.11.2020, 08:37 (ссылка)
  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET
  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь
  • Темы «ищу скрипт», «подскажите скрипт» и т.п. будут переноситься в форум «Web-технологии»
  • Темы с именами: «Срочно», «помогите», «не знаю как делать» будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

Что такое код imap_binary

Joined: 29 Jun 2003
Posts: 8151

Location: пос. Омсукчан Магаданской области

Правила форума «PHP»

Posted: Mon Aug 07, 2006 10:35 am ( спустя 1 час 2 минуты ; написано за 2 минуты 20 секунд )
Post subject:
Гость
Проверьте, что расширение IMAP подключено (посмотрев в phpinfo() ). Если это не так — читайте (и главное — усваивайте!) мануал, раздел «IMAP, POP3 and NNTP Functions»
Back to top
Гость
Guest

Posted: Mon Aug 07, 2006 12:05 pm ( спустя 1 час 29 минут ; написано за 52 секунды )
Post subject:
А где находится phpinfo?
А где находится мануал?
Back to top
Maus
Модератор

Joined: 29 Jun 2003
Posts: 8151

Location: пос. Омсукчан Магаданской области

Posted: Mon Aug 07, 2006 12:12 pm ( спустя 6 минут ; написано за 1 минуту 14 секунд )
Post subject:
Гость wrote:
А где находится phpinfo?

в тестовых ссылках.

Гость wrote:
А где находится мануал?

www.php.net/docs.php

В дельнейшем, прежде чем спрашивать, пользуйтесь поиском — как местным, так и гуглом

Back to top
Volkozay
Заглянувший

Joined: 29 Jun 2007
Posts: 3

Location: Мытищи

Posted: Fri Jun 29, 2007 2:24 pm ( спустя 10 месяцев 22 дня 2 часа 12 минут ; написано за 2 минуты 58 секунд )
Post subject:
Народ я полный идиот, но всёже помогите, опишите пожалуйста как точно это сделать, что скачать и куда поставить, по пунктам вам не трудно а нам огромная помощь. В www.php.net/manual/ru/ref.imap.php я не понял не чего очень прошу помочь
Back to top
Maus
Модератор

Joined: 29 Jun 2003
Posts: 8151

Location: пос. Омсукчан Магаданской области

Posted: Sun Jul 01, 2007 8:26 pm ( спустя 2 дня 6 часов 1 минуту ; написано за 2 минуты 58 секунд )
Post subject:
Volkozay wrote:
В www.php.net/manual/ru/ref.imap.php я не понял не чего

Тогда рекомендую Вам поискать форум с более подходящими собеседниками:

Форум «Лаборатории dk» wrote:
Здесь общаются Web-разработчики

Здесь форум для начинающих пользователей Денвера, а не для «начинающих вообще». В качестве аналогии: человек может быть опытным и знающим верстальщиком и при этом — начинающим пользователем PageMaker (поскольку раньше верстал в, скажем, Quark XPress)

Back to top
Volkozay
Заглянувший

Joined: 29 Jun 2007
Posts: 3

Location: Мытищи

Posted: Mon Jul 02, 2007 11:04 am ( спустя 14 часов 37 минут ; написано за 50 секунд )
Post subject:
Да я уже так разобрался без мануала
Back to top
Volkozay
Заглянувший

Joined: 29 Jun 2007
Posts: 3

Location: Мытищи

Posted: Mon Jul 02, 2007 11:06 am ( спустя 2 минуты ; написано за 1 минуту 5 секунд )
Post subject:
А вам спасибо что хоть так мило послали (и вас туда) мне интуиции хватило
Back to top
дмитрий м
Заглянувший

Joined: 10 Aug 2009
Posts: 2

Posted: Sat Aug 15, 2009 11:32 am ( спустя 2 года 1 месяц 13 дней 26 минут ; написано за 49 секунд )
Post subject:
Maus wrote:
А где находится phpinfo?
в тестовых ссылках.

в тестовых ссылках.

А где находятся тестовые ссылки?

Back to top
bæv
Модератор «Дзена»

Joined: 27 Aug 2003
Posts: 7275

АйТи бубен

Инструменты пользователя

Инструменты сайта

Содержание

Команды IMAP

Протокол IMAP (Internet Mail Access Protocol) описывается в RFC 2060.

В отличии от POP3, который просто скачивает входящие письма и сохраняет их локально, с IMAP вы работаете с почтой непосредственно на сервере

Как и POP3, протокол IMAP использует концепцию клиент-сервер с набором команд. С помощью команд осуществляется передача сообщений электронной почты от сервера клиенту. Клиент устанавливает для этой цели TCP-соединение с портом 143 на сервере. Далее сервер должен ответить специальным сообщением-приглашением.

В строке 1 показана команда на открытие сеанса с помощью telnet с портом 143 (порт IMAP по умолчанию). Строка 5 отображает приглашение, выданное сервером IMAP. В строке 6 клиентом задана команда закончить сеанс с сервером. Затем сервер посылает сообщение об окончании сеанса (строка 7) и закрывает соединение с клиентом.

Каждая команда, выдаваемая клиентом, предваряется уникальным идентификатором. Сервер может затем использовать этот идентификатор в своих ответах, что позволяет клиенту определить, к какой команде относится ответ сервера. Это особенно важно при выполнении сервером нескольких команд за сеанс. Идентификатор обычно представляет собой короткую строку алфавитно-цифровых символов, которая генерируется клиентом. Так, в строке 6 листинга 7.1 клиентом был выбран идентификатор a001. Если бы клиенту потребовалось задавать и другие команды, то следующим идентификатором был бы a002 и т.д. Часто для упрощения идентификаторы команд в течение сеанса IMAP просто последовательно увеличивают один из своих разрядов.

После установления соединения клиент находится в состоянии ожидания проверки подлинности, так как для выполнения каких-либо операций со своим почтовым ящиком на сервере он должен идентифицировать себя. После идентификации на сервере клиент может использовать команды IMAP для управления сообщениями на сервере. Протоколом IMAP предусмотрена возможность поддержки пользователем нескольких почтовых ящиков на одном сервере. При этом клиент может читать, отправлять и удалять сообщения в любом из принадлежащих ему почтовых ящиков.

Методы проверки подлинности пользователя в IMAP

Так же как и в протоколе POP3, в IMAP имеется несколько методов проверки подлинности клиента. Некоторые из них обеспечивают больший уровень безопасности, по сравнению с другими. В отличие от клиентов POP3, клиенты IMAP часто проводят довольно длительные сеансы с сервером при обработке сообщений. Таким образом, идентификатор пользователя и пароль не передаются по сети несколько раз в час, как это обычно происходит при работе по протоколу POP3.

Команда LOGIN

Команда LOGIN позволяет клиенту при регистрации на сервере IMAP использовать идентификатор пользователя и пароль в обычном текстовом виде.

Команда AUTHENTICATE

С помощью команды AUTHENTICATE клиент может использовать при регистрации на сервере IMAP альтернативные методы проверки подлинности. Индивидуальная проверка подлинности пользователей не является обязательной и поддерживается не всеми серверами IMAP. К тому же реализации такой проверки могут различаться в зависимости от сервера. Когда клиент выдает команду AUTHENTICATE, сервер отвечает на нее строкой вызова в кодировке base64. Далее в обязанности клиента входит ответ на вызов сервера о проверке подлинности, также закодированный base64. Если на сервере не поддерживается метод проверки подлинности, предложенный клиентом, он включает в свой ответ отрицательное слово NO. После этого клиент должен продолжить переговоры по согласованию метода проверки подлинности. Если все попытки определить метод проверки подлинности потерпели неудачу, то клиент предпринимает попытку зарегистрироваться на сервере посредством команды LOGIN. Пример сеанса с применением AUTHENTICATE:

В строках 6–9 показаны попытки клиента согласовать с сервером IMAP метод проверки подлинности. Как видите, все они не увенчались успехом. А в строке 10 показано, что метод проверки, приемлемый и для клиента, и для сервера, найден. Отвечая, сервер в строке 11 выдает кодированную строку с вызовом в кодировке base64. Однако в строке 12 клиент отвергает попытку регистрации и возобновляет ее лишь в строке 14 с помощью команды LOGIN.

Клиентская часть протокола IMAP

После регистрации на сервере IMAP клиент может приступить к манипулированию сообщениями. Протокол IMAP предлагает довольном много команд для чтения, перемещения и удаления почтовых сообщений в почтовых ящиках на сервере. Помните, что протокол IMAP предполагает хранение всех сообщений на сервере. Загрузка почтовых сообщений на локальный компьютер производится лишь для отображения. При этом они не перемещаются и не копируются на локальный ПК клиента.

Почтовый ящик для клиента по умолчанию носит название INBOX. Все новые сообщения ложатся именно в INBOX. Клиент имеет возможность создавать новые почтовые ящики (иногда называемые в программах-клиентах для работы с электронной почтой папками). Туда с целью упорядочения он может перемещать сообщения из папки INBOX.

Каждому сообщению назначается уникальный идентификатор (UID), по которому они идентифицируются в почтовом ящике. Метка UID сохраняется в течение всех сеансов IMAP для того, чтобы клиентское программное обеспечение могло правильно идентифицировать сообщения в почтовом ящике. Каждому почтовому ящику соответствует уникальный идентификатор достоверности (UIDVALIDITY). Метка UIDVALIDITY должна присутствовать во время всех сеансов IMAP, только в том случае, если идентификаторы сообщений в ящике оставались неизменными. Если в почтовом ящике имеются сообщения с различными идентификаторами, то значение UIDVALIDITY при следующем сеансе должно увеличиться. Это позволяет клиентам быстро определять, появились ли в почтовом ящике новые сообщения с момента последнего к нему обращения.

Каждое сообщение снабжается флагом, который отображает его статус. Флаг может быть постоянным или задаваться на время сеанса. Постоянные флаги могут изменяться клиентом и сохраняться вне зависимости от сеансов. Флаги, назначаемые на время сеанса, действительны только на время текущего сеанса IMAP. В табл. 7.1 представлены варианты флагов почтовых сообщений.

Флаги почтового сообщения IMAP

Почтовому сообщению может соответствовать 0 флагов или несколько флагов. Информация о флагах передается клиенту вместе с самим сообщением. В обязанности клиента входит интерпретация флагов соответствующим образом.

В следующем разделе описываются команды IMAP, которые клиент может задавать серверу.

Сервер должен отвечать соответствующим образом на заданные команды или отвечать отрицательно, если команда задана неправильно либо не поддерживается.

Команда SELECT

Команда SELECT используется, лишь когда почтовый ящик активен. По умолчанию, пока клиент не зарегистрирован в системе, ни один из принадлежащих ему почтовых ящиков не является выбранным. Далее клиент должен выбрать почтовый ящик, с которым он собирается работать. Обычно первый ящик, который выбирается клиентом, — это ящик INBOX, куда помещаются новые сообщения. Формат команды SELECT следующий:

Здесь mailbox — это название почтового ящика, к которому обращается клиент. Во время одного сеанса IMAP может быть активен только один почтовый ящик. Если ящик существует и у клиента имеется соответствующий доступ к нему, то сервер дает многострочный ответ, где описывается состояние почтового ящика.

Команда CREATE

Команда CREATE используется для создания нового почтового ящика на сервере IMAP. Имя и местоположение новых почтовых ящиков определяются в соответствии с общими спецификациями ОС Linux. В рабочем каталоге пользователя создается новый почтовый ящик с именем, но без задания местоположения, так как оно известно каталогу $HOME клиента. Например, если рабочий каталог клиента находится в /home/riley и клиент задает команду CREATE для создания нового почтового ящика stuff/junk, то вновь созданный ящик на почтовом сервере под управлением ОС Linux будет иметь путь /home/riley/stuff/junk. В этом примере вы видите, как используется знак разделителя /. Однако это не является общим для всех серверов IMAP.

Команда DELETE

Команда DELETE применяется к почтовым ящикам, а не к сообщениям. Сервер IMAP при получении этой команды попытается удалить почтовый ящик с именем, указанным в качестве аргумента команды. В аргументе команды можно использовать стандартное описание путей ОС Linux, со знаком разделителя /, если только они не находятся в каталоге $HOME. Сообщения из удаленных почтовых ящиков восстановлению не подлежат и теряются вместе с ящиками.

Команда RENAME

С помощью команды RENAME клиент может изменить имя почтового ящика. При этом возможно применение двух параметров. Первый параметр — собственно имя почтового ящика, который требуется переименовать. И второй параметр — новое имя почтового ящика.

Команда LIST

Команда LIST используется для получения списка всех почтовых ящиков клиента. С ней используются два параметра. Формат команды LIST приведен ниже:

Здесь reference — каталог, где находятся почтовые ящики. Если задается пустая строка вместо этого параметра («»), то почтовые ящики находятся в рабочем каталоге пользователя $HOME. Второй параметр mailbox является именем почтового ящика, который нужно просмотреть. Здесь допускается использование специальных символов, так же, как и при получении обычного списка каталогов, например группового символа (*). Если именем почтового ящика задана пустая строка («»), то сервер будет возвращать в качестве ответа иерархический разделитель (для Linux /) и имя корневого параметра.

Команда LSUB

Команда LSUB используется для устранения проблемы, которая описана для команды LIST. В отличие от команды LIST, с помощью которой отображается все содержимое рабочего каталога пользователя, с помощью команды LSUB отображаются лишь активизированные ранее описанной командой SUBSCRIBE почтовые ящики клиента. Параметры команды LSUB точно такие же, что и для команды LIST, т.е. ссылка (reference) и имя почтового ящика. Подобно команде LIST, параметр ссылки указывает путь к каталогу, в котором находятся почтовые ящики с соответствующими именами (каталог $HOME, если указано «»). Соответственно, под именем почтового ящика понимается имя ящика или имена ящиков, которые требуется вывести в списке (допускается групповой символ (*).

Почтовые ящики могут затем добавляться в список активных ящиков с помощью команды SUBSCRIBE, а удаляться из списка с помощью команды UNSUBSCRIBE. С помощью этих команд можно реализовать на базе клиента IMAP чтение групп новостей. При этом каждая группа новостей реализована как отдельный почтовый ящик на сервере, на которую затем можно подписаться. Сегодня большинство программ для работы с электронной почтой включают функцию чтения групп новостей, так что выполнение этих операций в IMAP не требуется.

Команда APPEND

APPEND — еще одна команда из семейства команд IMAP. Как правило, протокол IMAP применяется исключительно для чтения сообщений из почтовых ящиков. С помощью команды APPEND появляется возможность посылать сообщения в почтовый ящик, добавляя сообщение к концу файла почтового ящика. Эта функция работает не совсем корректно и она является довольно опасной, поэтому не рекомендуем увлекаться ею в качестве альтернативы SMTP. Это, скорее, приятное излишество протокола IMAP, а не рабочая лошадка. Основной формат команды APPEND следующий:

Команда CHECK

Команда CHECK используется для установки контрольной точки в почтовом ящике. Любые операции, такие, например, как запись данных из памяти сервера на его жесткий диск, должны выполняться при соответствующем состоянии почтового ящика. Именно для проверки целостности почтового ящика после дисковых и других подобных им операций и применяется команда CHECK. Эта команда используется без параметров.

Команда CLOSE

Команда CLOSE полностью соответствует своему названию — она закрывает почтовый ящик.

Действие команды CLOSE четко прослеживается на только что открытом новом почтовом ящике. Открытый почтовый ящик закрывается также с помощью команды LOGOUT. Команда CLOSE не имеет параметров.

Команда EXPUNGE

Ответ сервера на команду EXPUNGE представляет собой отчет о новом состоянии почтового ящика.

В строке 8 пользователь alex выбирает почтовый ящик с именем newbox. Строки 9–16 представляют собой ответ сервера с информацией относительно выбранного почтового ящика. Строка 9 говорит о том, что в нем находится 6 сообщений. В строках 17 и 20 пользователь alex воспользовался командой STORE, чтобы пометить два сообщения как удаленные (\DELETED). Затем в строке 23 пользователь alex выдает команду STATUS. Из строки 24 можно сделать заключение, что, с точки зрения сервера IMAP, в почтовом ящике все еще находятся шесть сообщений, хотя два из них помечены как удаленные. В строке 26 пользователь выдает команду EXPUNGE, по которой сообщения, помеченные как удаленные, стираются. Ответ сервера в строках 27–31 подтверждает, что сообщения были удалены из ящика и в нем осталось четыре сообщения. Это же подтверждает и команда STATUS, заданная в строке 32. На нее сервер отвечает, что в почтовом ящике теперь только четыре сообщения.

Команда SEARCH является одним из наиболее мощных средств из арсенала IMAP. С помощью этой команды производится поиск сообщений по критериям в активном почтовом ящике с последующим отображением результатов в виде номера сообщения. Формат команды SEARCH следующий:

Здесь CHARSET specification состоит из служебного слова CHARSET, за которым следует обозначение набора символов. Набор символов по умолчанию — ASCII , так что, как правило, этот параметр опускается. Параметр search criteria определяет ключевые критерии поиска и их значения. Критерии поиска описаны в табл. 7.3.

Таблица. Критерии поиска для команды SEARCH

Как видно из таблицы существует огромное количество критериев поиска сообщений. Это очень удобно, когда требуется найти специфическое сообщение в почтовых ящиках, которые заполнены большим количеством сообщений. Ниже представлен короткий пример с использованием команды SEARCH.

В строках 17, 20 и 23 показаны примеры использования команды SEARCH. Строки 18, 21 и 24 являются ответами сервера IMAP на команду SEARCH. В ответе содержатся номера сообщений, которые соответствуют критерию поиска. Если соответствий не найдено, то сервер возвращает слово SEARCH без идентификатора сообщения UID.

Команда FETCH

Команда FETCH используется для получения текста почтового сообщения. Она применяется только для отображения сообщений. В отличие от POP3, клиент IMAP не сохраняет копию сообщения на клиентском ПК.

Команда STORE

Команда STORE применяется для изменения информации о сообщении. Формат команды следующий:

Аргумент задает диапазон номеров сообщений, к которым применяется команда STORE. В настоящее время для этой команды определено только два типа данных ( ). Тип FLAGS определяет набор флагов, установленных для сообщения. Тип FLAGS.SILENT также определяет набор флагов, установленных для сообщения, но при этом сервер IMAP не возвращает их новое значение в своем ответе.

Поведением этих типов данных можно управлять, задав перед ними знак плюс (+) или минус (-). Знак плюс означает, что значение типа данных ( ) будет добавлено к сообщению, минус — что оно будет удалено из сообщения.

В строке 18 этого листинга показано, как устанавливается флаг \DELETED для сообщения в активном почтовом ящике с номером 1. Обратите внимание, что перед флагом задан знак плюс (+). Можно было бы также задать флаг (-). Тогда флаг \DELETED был бы отменен для сообщения (один из способов восстановить удаленное сообщение до того, как вступят в силу контрольные точки сообщения).

Команда COPY

Команда COPY используется для копирования сообщений из одного почтового ящика в другой. Формат команды COPY приведен ниже:

Здесь задает диапазон номеров сообщений, которые нужно скопировать из активного почтового ящика, а указывает имя ящика, в который их нужно скопировать.

Для протокола IMAP не определена команда перемещения сообщений, но очевидно, что эта операция есть не что иное, как копирование сообщений в другой почтовый ящик с заданием для оригиналов сообщений флага \DELETED. После следующей ротации почтового ящика (расстановки контрольных точек) оригиналы сообщений будут удалены, и останутся только их копии.

Команда CAPABILITY

С помощью команды CAPABILITY клиент может запрашивать у сервера IMAP информацию о его возможностях.

Команда NOOP

Действия команды NOOP, как мы знаем, соответствует ее названию, т.е. она ничего не делает. Она может применяться для поддержки активности во время сеанса для того, чтобы сеанс не прекратился по таймеру интервала ожидания. Ответ сервера на команду NOOP всегда должен быть положительным. Так как сервер часто в ответе возвращает состояние выполнения той или иной команды, то NOOP вполне можно использовать как триггер для периодического запроса о состоянии сервера. Если что-то произошло с почтовым ящиком во время периода ожидания, например сервер удалил сообщения согласно правилам, установленным для почтового ящика администратором почтовой системы, то в ответ на команду NOOP будет возвращена обновленная информация о его состоянии.

Команда LOGOUT

Команда LOGOUT используется для завершения сеанса для текущего идентификатора пользователя и закрытия всех открытых почтовых ящиков. Если какие-либо сообщения были помечены флагом \DELETED, то с помощью этой команды они будут физически удалены из почтового ящика.

Поддерживает ли протокол IMAP двоичный код внутри многочастного тела?

8-битная текстовая и двоичная почта поддерживается с помощью
[MIME-IMB] кодирование передачи содержимого. Реализации IMAP4rev1 МОГУТ
передавать 8-битные или многооктетные символы в литералах, но СЛЕДУЕТ делать
поэтому только когда идентифицируется [CHARSET].

Хотя определено кодирование тела BINARY, запрещенные двоичные строки не допускаются. «Бинарная строка» — это любая строка с символами NUL. Реализации ДОЛЖНЫ кодировать двоичные данные в текстовую форму, такую как BASE64, перед передачей данных. Строка с избыточным количеством символов CTL МОЖЕТ также считаться двоичной.

Если реализация должна конвертироваться в base64, то почему RFC говорит, что «BINARY body encoding определен». Поскольку каждый раз, когда нам нужно отправлять данные как base64 (или какой-либо другой формат), эффективно двоичный файл не поддерживается. Или я читаю что-то неправильно?

IMAP поддерживает MIME многочастный, могут ли части внутри этого иметь двоичные данные? то есть кодирование передачи контента?

Я новичок в IMAP/HTTP, причина для того, чтобы задать этот вопрос, я должен разработать сервер, который поддерживает как HTTP, так и IMAP, в HTTP-сервере восстанавливать данные в двоичных (HUGE multipart data, с кодировкой передачи контента как двоичные), FETCH можно сделать в IMAP. Проблема в том, что мне нужно анализировать данные и преобразовывать каждую часть внутри multipart в base64, если IMAP не поддерживает двоичный файл. Я думаю, что это серьезная проблема с производительностью.

Ответ, к сожалению, «может быть».

MIME RFC поддерживает двоичный код, но IMAP RFC специально запрещает отправку символов NULL . Вероятно, это связано с тем, что они могут вводить в заблуждение для текстовых парсеров, особенно написанных на C, где NULL имеет значение End of String.

Некоторые IMAP-серверы просто считают тело «мешком байтов», и я сомневаюсь, что некоторые, если вообще есть, действительно перекодируют. Поэтому, если вы попросите все сообщение, вы, вероятно, получите его буквальное содержание.

Если ваши клиенты могут обрабатывать MIME-Binary, вы, вероятно, будете в порядке.

Существует RFC 3516 для расширения IMAP для правильной поддержки BINARY, но это широко не используется.

В качестве примечания: почему вы используете Multipart MIME? Это нечетный выбор реализации для HTTP.

Поддерживает ли протокол IMAP двоичный код внутри многочастного тела?

8-битный текстовые и бинарные почты поддерживается за счет использования
[MIME-IMB] кодирования переноса контента. Реализации IMAP4rev1 MAY
передают 8-битные или многооктетные символы в литералах, но ДОЛЖНЫ делать
, так что только при идентификации [CHARSET].

Хотя определено кодирование тела BINARY, строки с некодированным двоичным кодом не разрешены. «Бинарная строка» — любая строка с символами NUL. Реализации ДОЛЖНЫ кодировать двоичные данные в текстовую форму , например BASE64, перед передачей данных. A строка с чрезмерным количеством символов CTL МОЖЕТ также быть считается двоичным.

Если реализация должна преобразовать в base64, почему RFC говорит «двоичное кодирование тела определяется». Поскольку каждый раз, когда нам нужно отправлять данные как base64 (или какой-либо другой формат), эффективно двоичный файл не поддерживается. Или я читаю что-то неправильно?

IMAP поддерживает MIME с несколькими частями, могут ли части внутри этого иметь двоичные данные? то есть кодирование передачи контента?

Я новичок в IMAP/HTTP, причина задавать этот вопрос, я должен разработать сервер, который поддерживает как HTTP и IMAP, в HTTP-сервере Получать данные в двоичном (ОГРОМНЫЙ многочастных данных, с содержанием -трансферное кодирование как двоичное), FETCH может быть выполнено в IMAP. Проблема в том, что мне нужно анализировать данные и преобразовывать каждую часть внутри multipart в base64, если IMAP не поддерживает двоичный файл. Я думаю, что это серьезная проблема с производительностью.

Создан 20 окт. 16 2020-10-20 14:40:12 Nasir

Pixel.com

Скрипты и коды для веб-приложений

Место для рекламы

IMAP c PHP часть 2

В первой части темы было описано, как подключиться к серверу IMAP, используя функции PHP. В этой части мы завершим эту тему, функциями для работы с папками и чтение и скачивание содержимого электронной почты.

Работа с электронной почтой

Список с метками, как правило, связаны с каждым сообщением: прочитанное, ответил, помеченные, проект и др. Мы можем определить, было ли просмотрено сообщение или нет. Если сообщение не было просмотрено то мы получим значение “U”. Давайте модифицируем код из первой части статьи, чтобы отобразить прочитано/не прочитано.

Мы можем проверить статус Unseen и присваивать различные классы CSS для разметки, которые помогут узнать нам прочитано или не прочитано письмо не открывая его заново.

Мы также можем создать специальные метки, для электронной почты. Например, предположим, что мы хотим, пометить сообщение как избранные. Для этого мы используем свойства, которое будут иметь значение «F».

Чтобы установить метки для сообщения, мы используем функцию impa_setflag_full() .

Приведенный выше код помечает сообщение как «Read(\Seen)» и отправляет в статус «F». Я всегда предпочитаю использовать UID вместо электронной почты номер последовательности в качестве второго параметра, поэтому я должен задать необязательный четвертый параметр-константа ST_UID . С этой функцией Вы можете предоставить и другие метки, например, Черновики, Удаленные, и т.д.

В примере метки установлены только для одного сообщения, Вы можете предоставлять широкий спектр как «1,10″ в качестве второго параметра для установки меток на несколько сообщений.

Удаление сообщений электронной почты

Функция Imap_delete() используется для удаления сообщений. Функция только помечает их для удаления, но на самом деле не удаляет. Функция Imap_expunge() отвечает за фактические удаления отмеченных сообщений.

Я вызвал функцию delete с UID вместо порядкового номера. В противном случае, я рискую потерять важные сообщения из-за изменений в последовательности номеров (помните, одна из частей, с не уникальным номером).

Просмотр вложений в письме

Работа электронной почтой с вложениями, является следующей наиболее важной особенностью почтового клиента. Мы сосредоточимся на проверке почтовых вложений, и отображение их для скачивания.

Существуют различные методы для чтения структуры сообщения и идентификацией вложений. Библиотека, упомянута в первой части статьи, Получение класса почты разработана Митул Корадиа, имеет возможности для скачивания. Но в примере Я буду использовать функцию комментариев для функции imap_fetchstructure() , которая возможно, самый простой способ.

Перед тем как посмотреть на код, посмотрите структуру электронной почты с вложениями, возвращаемой imap_fetchstructure() .

Если вы внимательно посмотрите на структуру, вы увидите, что вложения разбросаны. Это письмо имеет 1 привязку, но можно сделать несколько вложений и тем самым несколько частей с привязкой. С этим параметром мы можем легко определить вложения:

Внутри функция viewMailbox() . Сначала мы получаем структуру каждого письма с помощью функции imap_fetchstructure() . Это будет возвращать объект, как показано ранее. Затем мы вызываем функцию getAttachments() , которая определит вложенные части.

Сначала мы проверим части для текущей электронной почты, а затем мы должны пройти через каждую часть рекурсивно. Нам нужно изменить номер части и передать рекурсивный вызов. Смотрите как номера под-частей разбиты на пункты сегментов. Если у вас есть 3 уровня частей, это будет что-то вроде 1.0.1.

Если частей больше нет, мы проверяем, был ли доступен параметр и его значение является “ATTACHMENT” “ВЛОЖЕНИЕ”. В таких ситуациях мы получаем структуру данной части с помощью imap_bodystruct() . Оба imap_bodystruct() и imap_fetchstructure() обеспечивает такой же результат. Единственная разница между ними в том, что мы можем использовать imap_bodystruct() для получения конкретной информации, а не всей структуры.

Теперь у нас есть список частей для данной электронной почты, и мы отобразим ссылки для скачивания вложений:

Скачать вложения

Чтобы скачать вложение, необходим UID отправителя письма, номер части и тип кодировки вложения. Я включил эти параметры в ссылке, созданной выше. После нажатия на ссылку, может быть вызвана следующая функция:

Сначала мы должны получить структуру данной части, чтобы определить название вложения, которое делается с imap_bodystruct() . Вы видите, что используется imap_msgno() , чтобы получить порядковый номер UID; это потому, что imap_bodystruct() не понимает UID, поэтому мы должны преобразовать UID в порядковый номер.

Далее мы получим содержимое вложенного с помощью imap_fetchbody() . Он будет получать только содержание данной части числа. Затем мы используем соответствующею функцию содержания для декодирования в соответствии с кодировкой типа данных привязанности к расшифровке.

И, наконец, мы выводим вложение с соответствующими заголовками, поэтому браузер будет скачивать файл.

Заключение

На этом мы завершаем изучение функции IMAP PHP, теперь у вас достаточно знаний, для сборки простой электронной почты.

Termin

Веб-дизайнер, цифровая графика, разработка веб-приложений, а также SEO, создаю сайты в качестве фрилансера. Основное содержание, статьи и обзоры инновационных веб-технологий и проектов.

Поддерживает ли протокол IMAP двоичный код внутри многочастного тела?

8-битная текстовая и двоичная почта поддерживается посредством использования [MIME-IMB] кодирование передачи содержимого. Реализации IMAP4rev1 МОГУТ / передавать 8-битные или многооктетные символы в литералах, но ДОЛЖНЫ делать поэтому только когда идентифицируется [CHARSET].

Хотя определено кодирование тела BINARY, некодированные двоичные строки не разрешены. «Бинарная строка» — это любая строка с NUL символов. Реализации ДОЛЖНЫ кодировать двоичные данные в текстовую форму, такую ​​как BASE64, перед передачей данных. строка с чрезмерным количеством символов CTL МОЖЕТ также быть считается двоичным.

Если реализация должна конвертироваться в base64, то почему RFC говорит, что «BINARY-кодирование тела определено». Поскольку каждый раз, когда нам нужно отправлять данные как base64 (или какой-либо другой формат), эффективно двоичный файл не поддерживается. Или я читаю что-то неправильно?

IMAP поддерживает MIME с несколькими частями, могут ли части внутри этого иметь двоичные данные? это кодирование передачи контента?

Я новичок в IMAP/HTTP, причина для того, чтобы задать этот вопрос, я должен разработать сервер, который поддерживает как HTTP, так и IMAP, в HTTP-сервере восстанавливать данные в двоичных (HUGE multipart data, с кодировкой передачи контента как двоичные) , FETCH можно сделать в IMAP. Проблема в том, что мне нужно анализировать данные и преобразовывать каждую часть внутри multipart в base64, если IMAP не поддерживает двоичный файл. Я думаю, что это серьезная проблема с производительностью.

АйТи бубен

Инструменты пользователя

Инструменты сайта

Содержание

Команды IMAP

Протокол IMAP (Internet Mail Access Protocol) описывается в RFC 2060.

В отличии от POP3, который просто скачивает входящие письма и сохраняет их локально, с IMAP вы работаете с почтой непосредственно на сервере

Как и POP3, протокол IMAP использует концепцию клиент-сервер с набором команд. С помощью команд осуществляется передача сообщений электронной почты от сервера клиенту. Клиент устанавливает для этой цели TCP-соединение с портом 143 на сервере. Далее сервер должен ответить специальным сообщением-приглашением.

В строке 1 показана команда на открытие сеанса с помощью telnet с портом 143 (порт IMAP по умолчанию). Строка 5 отображает приглашение, выданное сервером IMAP. В строке 6 клиентом задана команда закончить сеанс с сервером. Затем сервер посылает сообщение об окончании сеанса (строка 7) и закрывает соединение с клиентом.

Каждая команда, выдаваемая клиентом, предваряется уникальным идентификатором. Сервер может затем использовать этот идентификатор в своих ответах, что позволяет клиенту определить, к какой команде относится ответ сервера. Это особенно важно при выполнении сервером нескольких команд за сеанс. Идентификатор обычно представляет собой короткую строку алфавитно-цифровых символов, которая генерируется клиентом. Так, в строке 6 листинга 7.1 клиентом был выбран идентификатор a001. Если бы клиенту потребовалось задавать и другие команды, то следующим идентификатором был бы a002 и т.д. Часто для упрощения идентификаторы команд в течение сеанса IMAP просто последовательно увеличивают один из своих разрядов.

После установления соединения клиент находится в состоянии ожидания проверки подлинности, так как для выполнения каких-либо операций со своим почтовым ящиком на сервере он должен идентифицировать себя. После идентификации на сервере клиент может использовать команды IMAP для управления сообщениями на сервере. Протоколом IMAP предусмотрена возможность поддержки пользователем нескольких почтовых ящиков на одном сервере. При этом клиент может читать, отправлять и удалять сообщения в любом из принадлежащих ему почтовых ящиков.

Методы проверки подлинности пользователя в IMAP

Так же как и в протоколе POP3, в IMAP имеется несколько методов проверки подлинности клиента. Некоторые из них обеспечивают больший уровень безопасности, по сравнению с другими. В отличие от клиентов POP3, клиенты IMAP часто проводят довольно длительные сеансы с сервером при обработке сообщений. Таким образом, идентификатор пользователя и пароль не передаются по сети несколько раз в час, как это обычно происходит при работе по протоколу POP3.

Команда LOGIN

Команда LOGIN позволяет клиенту при регистрации на сервере IMAP использовать идентификатор пользователя и пароль в обычном текстовом виде.

Команда AUTHENTICATE

С помощью команды AUTHENTICATE клиент может использовать при регистрации на сервере IMAP альтернативные методы проверки подлинности. Индивидуальная проверка подлинности пользователей не является обязательной и поддерживается не всеми серверами IMAP. К тому же реализации такой проверки могут различаться в зависимости от сервера. Когда клиент выдает команду AUTHENTICATE, сервер отвечает на нее строкой вызова в кодировке base64. Далее в обязанности клиента входит ответ на вызов сервера о проверке подлинности, также закодированный base64. Если на сервере не поддерживается метод проверки подлинности, предложенный клиентом, он включает в свой ответ отрицательное слово NO. После этого клиент должен продолжить переговоры по согласованию метода проверки подлинности. Если все попытки определить метод проверки подлинности потерпели неудачу, то клиент предпринимает попытку зарегистрироваться на сервере посредством команды LOGIN. Пример сеанса с применением AUTHENTICATE:

В строках 6–9 показаны попытки клиента согласовать с сервером IMAP метод проверки подлинности. Как видите, все они не увенчались успехом. А в строке 10 показано, что метод проверки, приемлемый и для клиента, и для сервера, найден. Отвечая, сервер в строке 11 выдает кодированную строку с вызовом в кодировке base64. Однако в строке 12 клиент отвергает попытку регистрации и возобновляет ее лишь в строке 14 с помощью команды LOGIN.

Клиентская часть протокола IMAP

После регистрации на сервере IMAP клиент может приступить к манипулированию сообщениями. Протокол IMAP предлагает довольном много команд для чтения, перемещения и удаления почтовых сообщений в почтовых ящиках на сервере. Помните, что протокол IMAP предполагает хранение всех сообщений на сервере. Загрузка почтовых сообщений на локальный компьютер производится лишь для отображения. При этом они не перемещаются и не копируются на локальный ПК клиента.

Почтовый ящик для клиента по умолчанию носит название INBOX. Все новые сообщения ложатся именно в INBOX. Клиент имеет возможность создавать новые почтовые ящики (иногда называемые в программах-клиентах для работы с электронной почтой папками). Туда с целью упорядочения он может перемещать сообщения из папки INBOX.

Каждому сообщению назначается уникальный идентификатор (UID), по которому они идентифицируются в почтовом ящике. Метка UID сохраняется в течение всех сеансов IMAP для того, чтобы клиентское программное обеспечение могло правильно идентифицировать сообщения в почтовом ящике. Каждому почтовому ящику соответствует уникальный идентификатор достоверности (UIDVALIDITY). Метка UIDVALIDITY должна присутствовать во время всех сеансов IMAP, только в том случае, если идентификаторы сообщений в ящике оставались неизменными. Если в почтовом ящике имеются сообщения с различными идентификаторами, то значение UIDVALIDITY при следующем сеансе должно увеличиться. Это позволяет клиентам быстро определять, появились ли в почтовом ящике новые сообщения с момента последнего к нему обращения.

Каждое сообщение снабжается флагом, который отображает его статус. Флаг может быть постоянным или задаваться на время сеанса. Постоянные флаги могут изменяться клиентом и сохраняться вне зависимости от сеансов. Флаги, назначаемые на время сеанса, действительны только на время текущего сеанса IMAP. В табл. 7.1 представлены варианты флагов почтовых сообщений.

Флаги почтового сообщения IMAP

Почтовому сообщению может соответствовать 0 флагов или несколько флагов. Информация о флагах передается клиенту вместе с самим сообщением. В обязанности клиента входит интерпретация флагов соответствующим образом.

В следующем разделе описываются команды IMAP, которые клиент может задавать серверу.

Сервер должен отвечать соответствующим образом на заданные команды или отвечать отрицательно, если команда задана неправильно либо не поддерживается.

Команда SELECT

Команда SELECT используется, лишь когда почтовый ящик активен. По умолчанию, пока клиент не зарегистрирован в системе, ни один из принадлежащих ему почтовых ящиков не является выбранным. Далее клиент должен выбрать почтовый ящик, с которым он собирается работать. Обычно первый ящик, который выбирается клиентом, — это ящик INBOX, куда помещаются новые сообщения. Формат команды SELECT следующий:

Здесь mailbox — это название почтового ящика, к которому обращается клиент. Во время одного сеанса IMAP может быть активен только один почтовый ящик. Если ящик существует и у клиента имеется соответствующий доступ к нему, то сервер дает многострочный ответ, где описывается состояние почтового ящика.

Команда CREATE

Команда CREATE используется для создания нового почтового ящика на сервере IMAP. Имя и местоположение новых почтовых ящиков определяются в соответствии с общими спецификациями ОС Linux. В рабочем каталоге пользователя создается новый почтовый ящик с именем, но без задания местоположения, так как оно известно каталогу $HOME клиента. Например, если рабочий каталог клиента находится в /home/riley и клиент задает команду CREATE для создания нового почтового ящика stuff/junk, то вновь созданный ящик на почтовом сервере под управлением ОС Linux будет иметь путь /home/riley/stuff/junk. В этом примере вы видите, как используется знак разделителя /. Однако это не является общим для всех серверов IMAP.

Команда DELETE

Команда DELETE применяется к почтовым ящикам, а не к сообщениям. Сервер IMAP при получении этой команды попытается удалить почтовый ящик с именем, указанным в качестве аргумента команды. В аргументе команды можно использовать стандартное описание путей ОС Linux, со знаком разделителя /, если только они не находятся в каталоге $HOME. Сообщения из удаленных почтовых ящиков восстановлению не подлежат и теряются вместе с ящиками.

Команда RENAME

С помощью команды RENAME клиент может изменить имя почтового ящика. При этом возможно применение двух параметров. Первый параметр — собственно имя почтового ящика, который требуется переименовать. И второй параметр — новое имя почтового ящика.

Команда LIST

Команда LIST используется для получения списка всех почтовых ящиков клиента. С ней используются два параметра. Формат команды LIST приведен ниже:

Здесь reference — каталог, где находятся почтовые ящики. Если задается пустая строка вместо этого параметра («»), то почтовые ящики находятся в рабочем каталоге пользователя $HOME. Второй параметр mailbox является именем почтового ящика, который нужно просмотреть. Здесь допускается использование специальных символов, так же, как и при получении обычного списка каталогов, например группового символа (*). Если именем почтового ящика задана пустая строка («»), то сервер будет возвращать в качестве ответа иерархический разделитель (для Linux /) и имя корневого параметра.

Команда LSUB

Команда LSUB используется для устранения проблемы, которая описана для команды LIST. В отличие от команды LIST, с помощью которой отображается все содержимое рабочего каталога пользователя, с помощью команды LSUB отображаются лишь активизированные ранее описанной командой SUBSCRIBE почтовые ящики клиента. Параметры команды LSUB точно такие же, что и для команды LIST, т.е. ссылка (reference) и имя почтового ящика. Подобно команде LIST, параметр ссылки указывает путь к каталогу, в котором находятся почтовые ящики с соответствующими именами (каталог $HOME, если указано «»). Соответственно, под именем почтового ящика понимается имя ящика или имена ящиков, которые требуется вывести в списке (допускается групповой символ (*).

Почтовые ящики могут затем добавляться в список активных ящиков с помощью команды SUBSCRIBE, а удаляться из списка с помощью команды UNSUBSCRIBE. С помощью этих команд можно реализовать на базе клиента IMAP чтение групп новостей. При этом каждая группа новостей реализована как отдельный почтовый ящик на сервере, на которую затем можно подписаться. Сегодня большинство программ для работы с электронной почтой включают функцию чтения групп новостей, так что выполнение этих операций в IMAP не требуется.

Команда APPEND

APPEND — еще одна команда из семейства команд IMAP. Как правило, протокол IMAP применяется исключительно для чтения сообщений из почтовых ящиков. С помощью команды APPEND появляется возможность посылать сообщения в почтовый ящик, добавляя сообщение к концу файла почтового ящика. Эта функция работает не совсем корректно и она является довольно опасной, поэтому не рекомендуем увлекаться ею в качестве альтернативы SMTP. Это, скорее, приятное излишество протокола IMAP, а не рабочая лошадка. Основной формат команды APPEND следующий:

Команда CHECK

Команда CHECK используется для установки контрольной точки в почтовом ящике. Любые операции, такие, например, как запись данных из памяти сервера на его жесткий диск, должны выполняться при соответствующем состоянии почтового ящика. Именно для проверки целостности почтового ящика после дисковых и других подобных им операций и применяется команда CHECK. Эта команда используется без параметров.

Команда CLOSE

Команда CLOSE полностью соответствует своему названию — она закрывает почтовый ящик.

Действие команды CLOSE четко прослеживается на только что открытом новом почтовом ящике. Открытый почтовый ящик закрывается также с помощью команды LOGOUT. Команда CLOSE не имеет параметров.

Команда EXPUNGE

Ответ сервера на команду EXPUNGE представляет собой отчет о новом состоянии почтового ящика.

В строке 8 пользователь alex выбирает почтовый ящик с именем newbox. Строки 9–16 представляют собой ответ сервера с информацией относительно выбранного почтового ящика. Строка 9 говорит о том, что в нем находится 6 сообщений. В строках 17 и 20 пользователь alex воспользовался командой STORE, чтобы пометить два сообщения как удаленные (\DELETED). Затем в строке 23 пользователь alex выдает команду STATUS. Из строки 24 можно сделать заключение, что, с точки зрения сервера IMAP, в почтовом ящике все еще находятся шесть сообщений, хотя два из них помечены как удаленные. В строке 26 пользователь выдает команду EXPUNGE, по которой сообщения, помеченные как удаленные, стираются. Ответ сервера в строках 27–31 подтверждает, что сообщения были удалены из ящика и в нем осталось четыре сообщения. Это же подтверждает и команда STATUS, заданная в строке 32. На нее сервер отвечает, что в почтовом ящике теперь только четыре сообщения.

Команда SEARCH

Команда SEARCH является одним из наиболее мощных средств из арсенала IMAP. С помощью этой команды производится поиск сообщений по критериям в активном почтовом ящике с последующим отображением результатов в виде номера сообщения. Формат команды SEARCH следующий:

Здесь CHARSET specification состоит из служебного слова CHARSET, за которым следует обозначение набора символов. Набор символов по умолчанию — ASCII , так что, как правило, этот параметр опускается. Параметр search criteria определяет ключевые критерии поиска и их значения. Критерии поиска описаны в табл. 7.3.

Таблица. Критерии поиска для команды SEARCH

Как видно из таблицы существует огромное количество критериев поиска сообщений. Это очень удобно, когда требуется найти специфическое сообщение в почтовых ящиках, которые заполнены большим количеством сообщений. Ниже представлен короткий пример с использованием команды SEARCH.

В строках 17, 20 и 23 показаны примеры использования команды SEARCH. Строки 18, 21 и 24 являются ответами сервера IMAP на команду SEARCH. В ответе содержатся номера сообщений, которые соответствуют критерию поиска. Если соответствий не найдено, то сервер возвращает слово SEARCH без идентификатора сообщения UID.

Команда FETCH

Команда FETCH используется для получения текста почтового сообщения. Она применяется только для отображения сообщений. В отличие от POP3, клиент IMAP не сохраняет копию сообщения на клиентском ПК.

Команда STORE

Команда STORE применяется для изменения информации о сообщении. Формат команды следующий:

Аргумент задает диапазон номеров сообщений, к которым применяется команда STORE. В настоящее время для этой команды определено только два типа данных ( ). Тип FLAGS определяет набор флагов, установленных для сообщения. Тип FLAGS.SILENT также определяет набор флагов, установленных для сообщения, но при этом сервер IMAP не возвращает их новое значение в своем ответе.

Поведением этих типов данных можно управлять, задав перед ними знак плюс (+) или минус (-). Знак плюс означает, что значение типа данных ( ) будет добавлено к сообщению, минус — что оно будет удалено из сообщения.

В строке 18 этого листинга показано, как устанавливается флаг \DELETED для сообщения в активном почтовом ящике с номером 1. Обратите внимание, что перед флагом задан знак плюс (+). Можно было бы также задать флаг (-). Тогда флаг \DELETED был бы отменен для сообщения (один из способов восстановить удаленное сообщение до того, как вступят в силу контрольные точки сообщения).

Команда COPY

Команда COPY используется для копирования сообщений из одного почтового ящика в другой. Формат команды COPY приведен ниже:

Здесь задает диапазон номеров сообщений, которые нужно скопировать из активного почтового ящика, а указывает имя ящика, в который их нужно скопировать.

Для протокола IMAP не определена команда перемещения сообщений, но очевидно, что эта операция есть не что иное, как копирование сообщений в другой почтовый ящик с заданием для оригиналов сообщений флага \DELETED. После следующей ротации почтового ящика (расстановки контрольных точек) оригиналы сообщений будут удалены, и останутся только их копии.

Команда CAPABILITY

С помощью команды CAPABILITY клиент может запрашивать у сервера IMAP информацию о его возможностях.

Команда NOOP

Действия команды NOOP, как мы знаем, соответствует ее названию, т.е. она ничего не делает. Она может применяться для поддержки активности во время сеанса для того, чтобы сеанс не прекратился по таймеру интервала ожидания. Ответ сервера на команду NOOP всегда должен быть положительным. Так как сервер часто в ответе возвращает состояние выполнения той или иной команды, то NOOP вполне можно использовать как триггер для периодического запроса о состоянии сервера. Если что-то произошло с почтовым ящиком во время периода ожидания, например сервер удалил сообщения согласно правилам, установленным для почтового ящика администратором почтовой системы, то в ответ на команду NOOP будет возвращена обновленная информация о его состоянии.

Команда LOGOUT

Команда LOGOUT используется для завершения сеанса для текущего идентификатора пользователя и закрытия всех открытых почтовых ящиков. Если какие-либо сообщения были помечены флагом \DELETED, то с помощью этой команды они будут физически удалены из почтового ящика.

Илон Маск рекомендует:  MySQL запросы простые и сложные mysql запросы
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL