Качнул исходник и немного его доработал (убрал кусок программы на получение почты, поместил поля для заполнения, изменил кодировку самого письма чтобы при получении отображалось коректно, заменил строку подключения к серверу с авторизацией)
все хорошо, за исключением того что тема письма при последующем получении в Outlook отображается некоректно - вместо слова "Тема" пишется "рЕЛЮ"
это проблемма с кодировкой, кто знает как решить проблемму прошу помочь
в Google не отправлять!-ибо приемлемого решения там не нашел
Если тема письма на русском, то при построении заголовков письма в поле Subject, указывай кодировку и кодируй содержимое этого поля.
Например, кодируй в Windows-1251
Subject: =?Windows-1251?b?0ODh7vLg/vno6SDh6Oft5fEg7/Du5OD+?=!
или кодируй в KOI8-RUS:
Subject: =?koi8-r?B?UmU6IPfB2yDLzMDeIM7FINPSwcLB1NnXwcXUIQ==?=
Спецификации этих кодировок вместе с примерами есть в интернете в большом количестве.
[Ответ]
kent_zae1 23:32 13.06.2009
Тема не так проста как кажется на первый взгляд
Subject: =?Windows-1251?b?0ODh7vLg/vno6SDh6Oft5fEg7/Du5OD+?=!
Subject: =?koi8-r?B?UmU6IPfB2yDLzMDeIM7FINPSwcLB1NnXwcXUIQ==?=
эти 2 строки работать никогда не будут
http://www.delphikingdom.ru/asp/answ...IDAnswer=16374
тут вроде бы есть решения, но в 2007 Delphi не работает
специально прикрепил исходник.
Выкладываю и сам код если у кого неначем скомпилировать, может предложите что
аутлук нипричем, на почтовом сервере тоже самое - неправильно отображается
У меня уже измененый код под Delpgi2007 http://programmersclub.ru/alar-pochovik/
здесь оригинал и исходник с которого я переделывал - он под Delphi7 попробуй может заработает,
можешь качнуть
Сообщение от kent_zae1:
Тема не так проста как кажется на первый взгляд
Subject: =?Windows-1251?b?0ODh7vLg/vno6SDh6Oft5fEg7/Du5OD+?=!
Subject: =?koi8-r?B?UmU6IPfB2yDLzMDeIM7FINPSwcLB1NnXwcXUIQ==?=
эти 2 строки работать никогда не будут http://www.delphikingdom.ru/asp/answ...IDAnswer=16374
Если не использовать левые компоненты, типа Indy, а делать всё вручную руками, то всё работает именно так, как я сказал.
2crabzzy я в шоке, не может быть
отправь мне, посмотрю на оба мыла
inkognito7621(собака)rambler.ru
inkognito7621(собака)yandex.ru
или EXE файл скомпилированый отправь на первый ящик, попробую ее потестить
хотя может из за того что ящик на mail.ru, надо попробовать на рамблере и яндексе
2Kerish у меня такая строка не работает, она подчеркивается красным цветом еще до компеляции
: = - это первое что он подчеркивает, видит это как операцию присваивания в которой допущена ошибка в виде пробела между : и = , ну и практически все остальное тоже в виду того что не может сообразить что это за набор символов.....
может в старых Delphi можно было так написать, (может какие-то модули нужно было подключать) но Delphi 2007 это не понимает.
Subject: =?koi8-r?B?UmU6IPfB2yDLzMDeIM7FINPSwcLB1NnXwcXUIQ==?=
хотя мжет я чего-то непонимаю.
[Ответ]
Yandex 11:39 15.06.2009
crabzzy, при использовании WinAPI надо понять какую функцию (юникодную или ansi) Delphi будет вызывать, и возможно надо перекодировать String. Ранее Delphi использовал ANSI-строки, но в виду того, что все переходят на unicode в D2007 может это и поменялось (надо смотреть).
P.S. Delphi старше 7 в глаза не видел.
[Ответ]
kent_zae1 11:49 15.06.2009
ну я в шоке
тема отображается правильно,
правда само сообщение отображается неправильно
вечером прийду буду эксперементировать
в твоем тоже самое, но те которые переадресованы там нормально
по поводу WinAPI и Subject :="?koi8-r?B?UmU6IPfB2yDLzMDeIM7FINPSwcLB1NnXwcXUIQ==?="
незнаю может и можно, я не так давно начал дэлфи увлекаться, поэтому просьба сильно не бить ))
прикрепляю скирины
Сообщение от Yandex:
P.S. Delphi старше 7 в глаза не видел.
сам бы рад не видеть, что самое отстойное нет нормальной справочной системы
больше всего раздражает не полная совместимость с предыдущими версиями, приходиться часто переделывать исходники
когда покупал диск - искал дэлфи7, а взял то что было, вот и мучаюсь теперь Изображения
Дело в том, что почтовому клиенту и не только, чтобы он словился, надо указывать в какой кодировке находится твое сообщение.
Например в одном из заголовков надо указать, допустим:
Content-Type: text/plain; charset=koi8-r
Просто я незнаю как это делать с каким-то компонентом, я всё это делал вручную, все данные передавал через стандартную виндовую библиотеку WinSock.
[Ответ]
kent_zae1 22:13 15.06.2009
думаю завтра или послезавтра съезжу и возьму Delphi7, возможно мучения кончатся, хотябы частично, там справка хотя бы нормальная
2Kerish у меня как раз тоже так получалось перекодировать как раз текст сообщения.
Чтобы текст сообщения был русским я прописывал:
SMTP.Host := Edit4.Text; // адресс почтового сервера
SMTP.Port := StrToInt(Edit1.Text); // порт по которому будет осуществляться подключение
SMTP.Username := Edit2.Text; // логин пользователя
SMTP.Password := Edit3.Text; // пароль пользователя
SMTP.AuthType := atDefault;
with IdMessage do
begin ContentType := 'text/plain';
CharSet := 'Windows-1251'; //для отправки письма в виндовой кодировке
Body.Assign(Memo1.Lines);
From.Text := Edit5.Text; //отправитель
Recipients.EMailAddresses := Edit6.Text; //получатель
Subject := Edit7.Text; //тема
а после этого идет как раз строка Body.Assign(Memo1.Lines); текст отпраки находиться в Memo1 - перекодируется все без проблем, но с темой почему-то у меня не прокатило, сейчас эксперементы прекратил пока, 7 дэлфи поставлю на днях и тогда попробую доделать
[Ответ]