Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.23;
Скачать: CL | DM;

Вниз

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

 
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


 
[email protected] ©   (2006-06-19 11:57) [6]

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

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


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


> [email protected] ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.056 c
1-1149781802
pound
2006-06-08 19:50
2006.07.23
Как копировать в буфер обмена из Edit


3-1147958886
SHD_
2006-05-18 17:28
2006.07.23
Название полей внешних ключей.


15-1150787034
Иксик
2006-06-20 11:03
2006.07.23
Российская пресса завоевывает международную аудиторию :)))


1-1150045065
Nikolaich
2006-06-11 20:57
2006.07.23
Как правильно определить дату в дельфи


2-1151662799
D@Nger
2006-06-30 14:19
2006.07.23
DBGrid и отключение редактирование колонки.