Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Вниз

Посоветуйте библиотеку для работы с почтой   Найти похожие ветки 

 
ANB ©   (2006-06-19 09:52) [0]

Посоветуйте толковую библиотеку для работы с почтой.
Попробовал Indy.
1) Выявил проблему с передачей кодировки windows-1251. Проблема решилась только правкой модуля Indy.
2) Вложения в письмо можно запихать только в виде файлов (а они у меня в блобиках лежат). Хотелось бы грузить прямо из строки или потока.
Качнул Synaps.
1) Очень хорошо сделаны вложения (хоть и не очень понятно все расписано в хелпе).
2) Опять проблема с кодировкой.
Без указания кодировки оутлук читает письмо крякозябрами.


 
wicked ©   (2006-06-19 10:26) [1]

ICS - http://www.overbyte.be


 
palva ©   (2006-06-19 10:33) [2]

Indy - толковая библиотека.
Проблемы желательно решать не правкой модулей, а заданием правильных параметров.

> Без указания кодировки оутлук читает письмо крякозябрами.
Ага, от Indi вы готовы отказаться, а от аутлука - нет. А ведь это уже проблемы почтового клиента, точнее его настройки.

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


 
Игорь Шевченко ©   (2006-06-19 10:54) [3]

mail2000 ?


 
ANB ©   (2006-06-19 11:30) [4]


> Проблемы желательно решать не правкой модулей, а заданием
> правильных параметров.

Задавал я параметры. Прошел отладчиком - Инди их проигнорил.


> Ага, от Indi вы готовы отказаться, а от аутлука - нет. А
> ведь это уже проблемы почтового клиента, точнее его настройки.
>

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


> Игорь Шевченко ©   (19.06.06 10:54) [3]
> mail2000 ?

Это где взять и с чем есть ?


 
Игорь Шевченко ©   (2006-06-19 11:33) [5]

ANB ©   (19.06.06 11:30) [4]


> Это где взять и с чем есть ?


Это набор компонент(ов) для работы с почтой. Взять вроде на torry


 
Lamer@fools.ua ©   (2006-06-19 11:57) [6]

>Попробовал Indy.

Какой версии?


 
ANB ©   (2006-06-19 12:10) [7]


> Lamer@fools.ua ©   (19.06.06 11:57) [6]

Какой был по умолчанию в делфи 7.
Даже если в более поздней версии граблю с кодировкой исправили исправили, то вряд ли добавили возможность класть бинарник из строки или потока.


> Игорь Шевченко ©   (19.06.06 11:33) [5]

Качнул - обалденная и довольно простая вещь. Код отправки написан за 3 минуты. Но одна неувязка - TSMTP2000 не умеет передавать логин и пароль.


 
Игорь Шевченко ©   (2006-06-19 12:20) [8]


> Но одна неувязка - TSMTP2000 не умеет передавать логин и
> пароль.


В соответствии со стандартом SMTP


 
ANB ©   (2006-06-19 12:28) [9]


> В соответствии со стандартом SMTP

Вот млин. Совсем лох я в этом деле. Где почитать можно толково про стандарты SMTP и POP3 ?


 
wal ©   (2006-06-19 12:30) [10]


> [9] ANB ©   (19.06.06 12:28)
http://www.rfc-editor.org/rfcsearch.html


 
ANB ©   (2006-06-19 12:37) [11]


> Игорь Шевченко ©   (19.06.06 12:20) [8]

И вторая неувязка - обработка ошибок :


 if not Assigned(FMailMessage) then
 begin

   Exception.Create(Self.Name+": MailMessage unassigned");
   Result := False;
   Exit;
 end;


Этот код довольно бестолков и плюс - вызовет утечку памяти.


 
Slym ©   (2006-06-19 12:37) [12]

минимум переделки, и вложения хранятся в памяти как MemoryStream :)


 
Игорь Шевченко ©   (2006-06-19 12:41) [13]

ANB ©   (19.06.06 12:37) [11]

Исходники есть, руки есть. За то время, пока живет ветка, можно 10 раз поправить исходники в желаемую сторону, а не смотреть в зубы дареному коню :)


 
Slym ©   (2006-06-19 13:06) [14]

в IdAttachment.pas
TIdAttachment = class(TIdMessagePart)
 private
   FData:TMemoryStream;
   FFileName: TFileName;
   //
 public
   //
   property Data:TMemoryStream read FData write SetData;
   property FileName: TFileName read FFileName write FFileName;

в idmessageclient.pas меняешь код

           LDestStream := TIdTCPStream.Create(Self);
           try
             with LEncoder do
             try
               Filename := TIdAttachment(AMsg.MessageParts[i]).Filename;
               LSrcStream := TIdStreamVCL.Create(TIdAttachment(AMsg.MessageParts[i]).OpenLoadStream);
               try
                 Encode(LSrcStream, LDestStream);
               finally
                 TIdAttachment(AMsg.MessageParts[i]).CloseLoadStream;
                 LSrcStream.Free;
               end;
             finally
               Free;
             end;
           finally
             FreeAndNil(LDestStream);
           end;

на

           LDestStream := TIdTCPStream.Create(Self);
           try
             with LEncoder do
             try
               Filename := TIdAttachment(AMsg.MessageParts[i]).Filename;
               LSrcStream := TIdStreamVCL.Create(TIdAttachment(AMsg.MessageParts[i]).Data);
               try
                 Encode(LSrcStream, LDestStream);
               finally
                 LSrcStream.Free;
               end;
             finally
               Free;
             end;
           finally
             FreeAndNil(LDestStream);
           end;


 
Slym ©   (2006-06-19 13:09) [15]

и переделать function ProcessAttachment(ADecoder: TIdMessageDecoder): TIdMessageDecoder; из idmessageclient.pas


 
palva ©   (2006-06-19 13:28) [16]

> пока живет ветка, можно 10 раз поправить исходники в желаемую сторону
Только зачем? Работа компонент управляется параметрами, а не правкой исходников. Если это делается в учебных целях или по заданию препода, тогда другое дело. А в общем случае лучше придерживаться стандартных протоколов, иначе при неумелой правке ваше письмо будет читаться по-разному в разных почтовых клиентах.


 
Slym ©   (2006-06-19 13:33) [17]

palva ©   (19.06.06 13:28) [16]
Только зачем? Работа компонент управляется параметрами

Работа НОРМАЛЬНЫХ компонент - да
INDY - НЕТ (огромное множество багов и очепяток)


 
palva ©   (2006-06-19 13:51) [18]

> Slym ©   (19.06.06 13:33) [17]
> огромное множество багов и очепяток
А причем здесь баги?
Проблемы, возникшие у автора решаются правильным заданием параметров. Баги и очепятки, которые (возможно) существуют в Indi, в данном случае ему не помешают. А править исходники - самое последнее дело. В том смысле, что первым делом является ознакомление с протоколом SMTP, с которым, судя по вопросам, автор не знаком.


 
Val ©   (2006-06-19 13:58) [19]

угу. а по поводу кодировки в письмах в инди есть топики на королевстве, я по ним проблему решил без правки исходников.


 
ANB ©   (2006-06-19 14:39) [20]


> Val ©   (19.06.06 13:58) [19]

В этих же топиках советовали править Indy


> Баги и очепятки, которые (возможно) существуют в Indi, в
> данном случае

В данном случае именно они и помешали.


> Slym ©   (19.06.06 13:06) [14]

Править штатные делфовые компоненты весьма некузяво.


> Игорь Шевченко ©   (19.06.06 12:41) [13]

Ща бугор решит - править или нет. А так - библиотека очень компактная (1 модуль), код очень понятный, правки - немного.

Кстати, коннект по логину придется прикрутить.


 
Eraser ©   (2006-06-19 15:06) [21]

> ANB ©

и кстати все таки советую установить Indy 10, иначе потом кучу кода переписывать прийдется при переходе с 9 на 10.


 
ANB ©   (2006-06-19 15:33) [22]


> и кстати все таки советую установить Indy 10

Да мне проще вообще инди не трогать. Ща я выброшу его из проекта и все.
А зачем переходить с 9 на 10 ? И где взять инди 10 ?


 
Eraser ©   (2006-06-19 15:39) [23]

> [22] ANB ©   (19.06.06 15:33)


> Да мне проще вообще инди не трогать. Ща я выброшу его из
> проекта и все.

ну тогда все равно чем-то заменить надо будет...

> А зачем переходить с 9 на 10 ?

в 10 намного расширена функционльность, но и значительно переработан код, осюда - слабая обратная соместимость.

> И где взять инди 10 ?

http://www.indyproject.org/


 
ANB ©   (2006-06-21 14:46) [24]

Вот млин. Подкрутил Mail2000 (убрал явные косяки с неосвобождением памяти и добавил авторизацию на SMTP), теперь выяснил, что прикрепленный файл ни хрена не расшифровывается в исходное состояние.


 
atruhin ©   (2006-06-21 15:13) [25]

> что прикрепленный файл ни хрена не расшифровывается в исходное
> состояние.

А об этом на delphikingdom писали, косяк там с прикрепленными файлами.


 
ANB ©   (2006-06-21 16:42) [26]


> atruhin ©   (21.06.06 15:13) [25]

Млин. А отправляет все хорошо - без ошибок.
А кто знает - как в Indy 10 файл к сообщению приклеить ? Код работавший в старой Indy сломался и не компиляется.


 
tesseract ©   (2006-06-21 16:50) [27]


> А кто знает - как в Indy 10 файл к сообщению приклеить ?
>  Код работавший в старой Indy сломался и не компиляется.
>

Верни 9 мой совет с этой 10 одни №;%№?№;:?%:?:(*?*(


 
ANB ©   (2006-06-21 17:20) [28]


> tesseract ©   (21.06.06 16:50) [27]

Вот е..... Я как раз нашел способ работать с вложениями без сохранения их в файл.

А как вернуть ? И чего с ней делать ? Начальник не разрешает править код Indy, а неправленная не работает, как надо.


 
Eraser ©   (2006-06-21 18:21) [29]

> [28] ANB ©   (21.06.06 17:20)

как вариант - скопировать файл который нужно править в каталог с проектом и править уже его, мож прокатит.


 
ANB ©   (2006-06-22 10:43) [30]


> Eraser ©   (21.06.06 18:21) [29]

Я так уже сделал. Начальник сказал - что для пилота покатит, а для промышленного приложения - не очень.
А начальника я слушаюсь - сенсей !.


 
tesseract ©   (2006-06-22 11:00) [31]


> А как вернуть ? И чего с ней делать ? Начальник не разрешает
> править код Indy, а неправленная не работает, как надо.

скачай последнюю  версию с невроны.
Я её не правил, так она намоного стабильнее.
Вернуть просто - снеси 10 верни 9.


 
unknown ©   (2006-06-22 11:10) [32]


> tesseract ©   (21.06.06 16:50) [27]

А, собственно, что в десятке вызывает столько эмоций?
У меня, например TCP сервер написан - работает.
Сейчас доделываю POP/SMTP - проблем не наблюдается...
Хотя, если имели ввиду переход с 9 на 10 - то да, непривычно :)


 
tesseract ©   (2006-06-22 11:22) [33]


> У меня, например TCP сервер написан - работает.Сейчас доделываю
> POP/SMTP - проблем не наблюдается...Хотя, если имели ввиду
> переход с 9 на 10 - то да, непривычно :)

Я через неё с udp/tcp устройствами работаю. Что-то там не так.
Возможно и я косячу, но навряд-ли, через Socket-ы/indy 9 всё ок. Через 10 то соединение не-то, то данные не-те уходят.


 
ANB ©   (2006-06-22 11:37) [34]


> Хотя, если имели ввиду переход с 9 на 10 - то да, непривычно
> :)

Да не, там не много поменяли.


 
tesseract ©   (2006-06-22 12:03) [35]


> Да не, там не много поменяли.

процентов 30-40.


 
ANB ©   (2006-06-22 14:21) [36]


> tesseract ©   (22.06.06 12:03) [35]

Ну я свой код для работы с почтой то быстро переделал.

Но один хрен вылезла первая проблема - эта скотина Indy 10 игнорит установку CharSet !!!


 
tesseract ©   (2006-06-22 14:22) [37]


> Ну я свой код для работы с почтой то быстро переделал.

У меня ~ 5-7 проектов, UDPClient/server-ы

Запарился.


 
ANB ©   (2006-06-22 14:56) [38]

Йо. А еще кто нибудь знает толковую библиотеку ?


 
ANB ©   (2006-06-22 16:13) [39]

Фух. Нашел. В Indy 10 в модуле IdText есть класс TIdText. Приклеиваешь его как атачч, устанавливаешь CharSet и все работает, как задумано.


 
palva ©   (2006-06-22 16:30) [40]

ANB ©   (22.06.06 16:13) [39]
> устанавливаешь CharSet и все работает, как задумано.
Так писал же, что
> Indy 10 игнорит установку CharSet
Оказывается все работает.



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.012 c
8-1139289302
Gorger
2006-02-07 08:15
2006.07.23
Наложение текстуры на форму и станд. контролы


1-1149672019
Мрась
2006-06-07 13:20
2006.07.23
Компонент в DLL


5-1135878695
doppel
2005-12-29 20:51
2006.07.23
Редактирование компоненты


2-1151984955
abcd
2006-07-04 07:49
2006.07.23
mysql.стоит ли..


10-1122705847
rentgen
2005-07-30 10:44
2006.07.23
WorkBooks.Title -?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский