![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
Dimyan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
Помогите разобратся пожалуйста
почитал я про этот IdPOP3 нифига понять путем не могу попробывал сделать функцию она говорит что не может сохранить приатаченный файл
Мне нужно получить файл с почты, сохранить его в установленное место и вытащить из него приаттаченный файл, точнее даже сообщение сохронять не обязательно, главное сохранить приаттаченый файл -------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 5 Всего: 98 |
перед использованием объекта его создать неплохо бы ;)
а у тебя создание в конце идет + указатель теряется -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Нужно брать Items не от i, а от 0 до TIdMessageParts.AttachmentCount-1
|
|||
|
||||
Dimyan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
Все равно что то не получается
![]()
где: MessageBase - TIdMessage ReceiveBase - TIdPOP3 Пишет что ошибка сохранения аттача ![]() Подскажте плиз где ошибка, уже второй день с этим РОР3 бьюсь, нифига не выходит ![]() -------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Вот накатал пример. В Uses нужно добавить IdPOP3 и IdMessage.
В остальном функция самодостаточна. Для сохранения рекомендую добавить каталог к FileName.
|
|||
|
||||
Dimyan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
Почему то вот не начинается выполнение цикла
![]()
хотя почта на ящике есть и вся она с одним приаттаченым файлом говорит что m.MessageParts.Count = 1, ну и соответственно при m.MessageParts.Count-1 получается 0 и цикл перестает крутиться ![]() -------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Сейчас проверил. Код рабочий. Аттач складывается в папочку.
Попробуй указать полный путь, куда сохранять файл.
Все правильно - крутим от 0 до 0 = 1 раз. Можно крутить от -255 до -255 = 1 раз. Пусть 0 не пугает. Тут все нормально. |
|||
|
||||
Dimyan |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
Я вот так указал и ноль эффекта
точнее я проверил несколько раз, и почему то он не входит в цикл ![]() более того я попробывал закоментировать цикл и поставить вместо i ноль (просто для проверки) и как оказалось что
тоже проскакивает ![]() Добавлено @ 12:55 вот блин а теперь все получилось чет я намудрил короче Snowy, спасибо все работает Добавлено @ 12:55 вот блин а теперь все получилось чет я намудрил короче Snowy, спасибо все работает Добавлено @ 12:58 Snowy, подскажи еще если не сложно, а как теперь можно узанать адрес от кого пришло сообщение? -------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
||||
|
|||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
m.From.Name - имя
m.From. Address - адрес m.From.Text - имя и адрес вместе Добавлено @ 13:35 Все string; И еще добавь перед m.Free строчку pop.Delete(mc); Чтобы удалять сообщения из ящика. |
|||
|
||||
Dimyan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
А еще такой вопрос:
Как можно сохранить аттачмент со своим именем файла? -------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
C каким своим?
Ты же ручками пишешь: SaveToFile('C:\'+FileName); C каким именем хочешь, с таким и сохраняй. Что ты имеешь ввиду под "своим именем файла"? |
|||
|
||||
Dimyan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
Snowy, я это и имел в виду, все уже чтото заработался домой пора, а то глюки начинаются
![]() -------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
|||
|
||||
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
Хм. А если в письме два вложенных файла? Первый сохраняется нормально, а вот как дело доходит до второго - ошибка!
Как в этой ситуации действовать? |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Да хоть десять. Приведенный пример перебирает все части письма и складывает все аттачи в папку. Точно помню, что проверял. Даже, если вдруг имена совпадут (что маловероятно). Попробуй запусть не в дельфи, а сам ехешник. |
|||
|
||||
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
Snowy
Странно... без дельфей все работает нормально ![]() Тока я заметил интересную вещь: скаченый файл увеличивается на 2 байта! Скорее всего это символы 10 и 13 Почему? И как это предотвратить? |
|||
|
||||
Snowy |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Ничего странного. Конструкции try ... except так себя и ведут при включенном отладчике.
Что-то не замечал. Проверял с архивами - вполне работоспособны после сохранения. На размер не смотрел... Сомневаюсь, что что-то не так, но проверить сейчас нет возможности. Если все же так, то дело не в этом коде, а в реализации TIdAttachment. Попробуй сравнить исходный файл и принятый при помощи консольной комманды: fc /b file1.ext file2.ext |
||||
|
|||||
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
А вообще письмо может не отправиться? Т.е. допустим коннект установлен, все поля заполнены, но по какой то внешней причине send() не срабатывает. Как узнать, чтобы переслать письмо?
|
|||
|
||||
Snowy |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Письмо может не отправиться из-за плохой связи, либо, если сервер не остроили условия или он требует аутентификацию. Вообще-то топик про IdPOP3.
По-моему так:
|
||||||
|
|||||||
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
Snowy
Ясно. Сорри, за оффтоп, но как сделать чтобы отправленое письмо было в кодировке windows-1251 ? |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Нужно прописать ее в TIdMessage.ContentTransferEncoding Но это свойство не перекодирует само письмо, а только указывает какая кодировка. Ты сам должен заполнять текст письма в нужной кодировке. В заголовке она только конкретизируется для почтового клиента, чтобы ему не приходилось догадываться. Если исходный текст у тебя в другой кодировке - читай FAQ по кодировкам. P.S. и на будущее - если у тебя возник другой вопрос - создай для него отдельный топик. А то придет злой модератор и будет громко ругаться. Да и шансов получить ответ будет больше. |
|||
|
||||
Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 4 Всего: 162 |
Будет! Модератор: Пожалуйста, один топик - один вопрос. Тема закрыта. -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
mrVerus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 10.3.2009 Репутация: нет Всего: нет |
Парни помогите очень нужно получить письмо и сожранить его с аттачментом в файл *.eml не изменяя структуры оставить для других клиентских программ не дешифруя а просто сохронить. Зарание спасибо!!!
|
|||
|
||||
Matematik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 24 Всего: 50 |
mrVerus,
> получить письмо и сожранить его с аттачментом в файл *.eml не изменяя структуры Пример соединения с POP3 есть вверху. Вместо Retrieve() пользуй RetrieveRaw(), метод получает письмо, ничего в нем не меняя, и сохраняет его в TStringList, который можно далее сохранить в файл
|
|||
|
||||
mrVerus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 10.3.2009 Репутация: нет Всего: нет |
Спасибо тебе Matematik огромное. Я пишу почтовый сервер для лакалки с пересылкой на внешний почтовый ящик на номпонентах idSMTPServer,idPOP3Server,idPOP3 и idSMTP. Сколько код не долбил и читал описание получения нормально нигде не описано с серверами хоть как то понятно. Еще раз спасиб.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |