Собственный почтовый клиент...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Собственный почтовый клиент...

Сообщение GRS » 29.04.2004 (Чт) 21:35

Прива! :twisted:

Изучаю протоколы POP3 и SMTP. Написал для наглядности прогу, которая типа HiperTerminal'а текстовыми коммандами управляется. Все лады: подключаюсь, обмениваюсь запросами, получаю письма. НО! Тут реально встал вопрос. Как мне закачать Attachment с письма? У меня в ящике лежит письмо с прикрепленными фотками. Как мне их слить себе? Как я понял, вся эта беда шифруется в тексте сообщения, не так ли? Или нет? Где тогда?
Вообщем хочу написать альтернативу почтовой программе OExpress, исключительно для себя и с другим интерфейсом, но если я не смогу скачивать "прицепы", то ... сами понимаете.

Огромное спасибо! :shock:
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 30.04.2004 (Пт) 0:00

То, что ты назваешь "прицепом":) находится во вложении и в самом теле письма .... ты сливаешь себе когда говоришь серваку RETR N, где N- номер письма.
он тебе выдает всё письмо, потом ты его удачно удаляешь с сервера.
сохраняешь всё что тебе сервер залал в файлик. и начинаешь его анализировать ... вот тебе пример письма ....


Код: Выделить всё
X-Sieve: cmu-sieve 2.0
Envelope-to: zsergei@aaanet.ru
Received: from [10.5.1.161] (account toffee@ugramail.ru)
  by mx.ugramail.ru (CommuniGate Pro WebUser 4.1.8)
  with HTTP id 2035318 for zsergei@aaanet.ru; Wed, 31 Mar 2004 09:53:23 +0600
From: "toffee" <toffee@ugramail.ru>
Subject: "=?KOI8-R?Q?=CF=D4"<XXX@ugramail.ru>
To: "=?KOI8-R?Q?=FA=CF=D3" <zsergei@aaanet.ru>
X-Mailer: CommuniGate Pro WebUser Interface v.4.1.8
Date: Wed, 31 Mar 2004 09:53:23 +0600
Message-ID: <XXX@mx.ugramail.ru>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="_===2035318====mx.ugramail.ru===_"

This is a multi-part MIME message

--_===2035318====mx.ugramail.ru===_
Content-Type: text/plain; charset="KOI8-R"; format="flowed"
Content-Transfer-Encoding: 8bit

ðÒÉ×ÅÔ óÅÒÇÅÊ!

ÏÔ àÌØËÉ

--_===2035318====mx.ugramail.ru===_
Content-Type: image/pjpeg
Content-Disposition: attachment;
filename="Jul1.jpg"
Content-Transfer-Encoding: base64

/9j/4AAQSkZJRgABAgAAAQABAAD/4QDmRXhpZgAASUkqAAgAAAAFABIBAwABAAAAAQAAADEB
AgAcAAAASgAAADIBAgAUAAAAZgAAABMCAwABAAAAAQAAAGmHBAABAAAAegAAAAAAAABBQ0Qg
U3lzdGVtcyBEaWdpdGFsIEltYWdpbmcAMjAwMzoxMjoxNyAxNjo1NDowNQAFAACQBwAEAAAA
MDIxMJCSAgAEAAAAODgwAAKgBAABAAAAs


Из этой бороды ты получишь то что тебе нужно...

в частности как для вложения тебе прийдется дешифровать
Код: Выделить всё
Content-Type: image/pjpeg
Content-Disposition: attachment;
filename="Jul1.jpg"
Content-Transfer-Encoding: base64

/9j/4AAQSkZJRgABAgAAAQABAAD/4QDmRXhpZgAASUkqAAgAAAAFABIBAwABAAAAAQAAADEB
AgAcAAAASgAAADIBAgAUAAAAZgAAABMCAwABAAAAAQAAAGmHBAABAAAAegAAAAAAAABBQ0Qg
U3lzdGVtcyBEaWdpdGFsIEltYWdpbmcAMjAwMzoxMjoxNyAxNjo1NDowNQAFAACQBwAEAAAA
MDIxMJCSAgAEAAAAODgwAAKgBAABAAAAs
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 30.04.2004 (Пт) 8:00

SSecurity писал(а):в частности как для вложения тебе прийдется дешифровать
Код: Выделить всё
Content-Type: image/pjpeg
Content-Disposition: attachment;
filename="Jul1.jpg"
Content-Transfer-Encoding: base64

/9j/4AAQSkZJRgABAgAAAQABAAD/4QDmRXhpZgAASUkqAAgAAAAFABIBAwABAAAAAQAAADEB
AgAcAAAASgAAADIBAgAUAAAAZgAAABMCAwABAAAAAQAAAGmHBAABAAAAegAAAAAAAABBQ0Qg
U3lzdGVtcyBEaWdpdGFsIEltYWdpbmcAMjAwMzoxMjoxNyAxNjo1NDowNQAFAACQBwAEAAAA
MDIxMJCSAgAEAAAAODgwAAKgBAABAAAAs


:?: А всегда содержимое шифруется по base64? Не подскажешь, где можно взять наиболее полное и удобоваримое описание этого аллгоритма. Если я не ошибаюсь, где-то должен быть ключ... это не /9j/ ?


Спасибо! :?
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 30.04.2004 (Пт) 20:34

В зависимости от вложения применяется та или иная кодировка ... ну естественно и от клиента ... тама кесть какая-то штуковина ... что в итоге ты дешуфруя текст большего объема .... получаешь в полтора а то и в два раз меньший файл ... (русских букв и других символов нет) ... поищи инфу про Base64
по идее её найти можно ... но очень муторно ето всё шифровать .... хотя кто знает для нас самое главное - написать программу считает всё она сама:)

Если я найду чего-нить кину ссылку:)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 30.04.2004 (Пт) 22:33

Суть кодировки Base64 заключается в том, что каждые три байта ( т.е 24 бита) делятся на 4 части, каждая из которых содержит по 6 бит исходного кода. Затем Каждый 6-ти битный символ кодируется. Подробнее см. http://www.acnet.ge/networking/applic_l ... base64.htm

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 01.05.2004 (Сб) 2:23

Alexanbar писал(а):Суть кодировки Base64 заключается в том, что каждые три байта ( т.е 24 бита) делятся на 4 части, каждая из которых содержит по 6 бит исходного кода. Затем Каждый 6-ти битный символ кодируется. Подробнее см. http://www.acnet.ge/networking/applic_l ... base64.htm


Это первое описание алгоритма, на основании которого легко написать программу ... СПАСИБО огромное
помчался контрол "шифратор/дешифратор" себе делать, чтобы сто раз одно и тоже не писать:)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 01.05.2004 (Сб) 13:51

Ещё кое-что забыл сказать. Есть один нюанс- прикреплённый файл нужно не только закодировать, но поделить результат на строки (точно не помню какой длины - примерно 70-80 символов). А когда обратно собирать - соответственно, убрать разделительные символы, а затем пропустить через декодер

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 01.05.2004 (Сб) 23:19

ну это понятно можно открыть любую мессагу и там посмотреть ... главное - понятен алгоритм ... я вот тока не понял знак "=" причем там.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 01.05.2004 (Сб) 23:44

Дело в том, что размер файла не обязан быть кратным 3. Поэтому в конце файла появляются эти =. Это ещё одна тонкость.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 03.05.2004 (Пн) 0:53

А как ты определишь ... эти "=" относятся к файлу или к кодировке?
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 03.05.2004 (Пн) 18:37

Очень просто. Каждая часть Multipatr - письма начинается со строки-разделителя типа ------=_NextPart_000_000 .

Далее следует заголовок из строк типа:

type/sybtype: value

далее в принимаемом письме идет vbcrlf+vbcrlf. Затем- закодированный по base-64 файл строка за строкой, в конце последней строки может быть несколько знаков "=". Затем опять vbcrlf+vbcrlf. В отправляемом письме вместо VbCrLf нужно вставлять VbLf.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 03.05.2004 (Пн) 20:50

про строки разделители я в курсах ...

ну я спросил не про то...
предположим у тебя в исходном файле такая лабуда ...

====================================

(это твой файл)
в процессе кодирования можно кое-что потерять... за счет неделимости на три:)
И ещё вопрос где достать таблицу Base64 для кодирования;)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 04.05.2004 (Вт) 22:35

Что есть в исходном файле (т.е. в некодированном), тебя волновать не должно. А вот в закодированном файле "=" может быть только в конце и, по-моему, не более 2 штук.
А вот вся таблица (A- это 0 и т.д.):

Public Const Table As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="

Потерять ничего нельзя - ни единого байта - именно для этого и служит символ "=". Если размер файла не кратен 3, то добавляется нужное количество нулевых бит и количество знаков "=" как раз и обозначает, сколько лишних байт нужно убрать

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 04.05.2004 (Вт) 23:50

Ладушки спасибо ..... программу уже соченил .. запихну это всё в ДЛЛ и на этом можно будет про такую проблему забыть, хотя знать решение - тоже полезно:)

Ещё раз спасибо!
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, С.Т., Google-бот и гости: 2

    TopList