Форум: "Прочее";
Текущий архив: 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