| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > СРОЧНО!Требуется консультация-почтовые компоненты |
| Автор: Неизвестный программист 30.3.2005, 15:51 | ||
| Помогите!Что делать с такой прогой: Файл sendmail.dpr
У меня Delphi 2005.Открываю этот файл и появляется диалоговое окно: Upgrading Project: sendmail.dpr this project must be upgraded before it can be opened.Please select which project type you wish to target Delphi for .NET Delphi for Win32 Я отмечаю Delphi for Win32 и нажимаю OK, Но когда пытаюсь скомпилировать программу или запустить (F9) мне говорят: [Error] sendmail.dpr(178): E2003 Undeclared identifier: 'AuthenticationType' [Error] sendmail.dpr(178): E2003 Undeclared identifier: 'atLogin' Также в Инете я нашел несколько примеров отправки почты с использованием компонентов Indy,но там такая же история:Undeclared identifier: 'AuthenticationType' и все тут! Прошу писать подробно,так как я с Delphi совсем недавно знаком. Напоминаю,что программа консольная,то есть без формы. |
| Автор: Snowy 30.3.2005, 15:58 |
| Под Delphi 7 скомпилилось на ура. Посмотрел 78-ю строку. Все нормально. Если на нее ругается, то какие-то проблемы с TIdSMTP. Может другую версию скачать? В принципе необходимости в этой строке нет. Закомментируй ее. |
| Автор: Неизвестный программист 30.3.2005, 18:50 | ||||||
Я вообще-то диск покупал,а не скачивал.Это что же,мне новую версию Delphi выбрасывать на помойку и взять старую?????
Разве эта строка не ответственна за авторизацию на SMTP-сервере?
А какие могут быть проблемы?Она входит по умолчанию в Delphi и как это узнать? |
| Автор: <Spawn> 30.3.2005, 19:03 |
| В Delphi 2005 стоит Indy 10(а в D7 Indy 9), если мне не изменяет память. Вот видимо в этом и траблы все, возможно, что свойство как то изменено - проверить нет возможности, т.к. Delphi 2005 слетела (только что запускал - ни один проект создать нельзя, ерроры летят |
| Автор: Неизвестный программист 31.3.2005, 01:15 | ||
А у тебя несколько версий Delphi стоят? Я вообще запутался с этим. Как я понял,раньше главным файлом проекта был файл с расширением *.dpr. А в Delphi 2005 - *.bdsproj. Это что же за такое безобразие - напишешь какую-нибудь полезную прогу, а потом в новой версии тебе скажут гудбай и выкидывай свою прогу на мусорку? Идиотизм полный... |
| Автор: FRAGNATIC 31.3.2005, 01:18 | ||
Д2005 не стоит раньше устонавливал) на ней не создовал проекты так что сказать не могу какого раширения они но вот могу сказать с вереностью на 100% что *.dpr проекты она открывает и компилит на ура) |
| Автор: Неизвестный программист 31.3.2005, 03:40 | ||
Ну да!Я уже понял.При открытии файла .dpr Delphi 2005 добавляет в папку с исходниками файл проекта с другим расширением - bdsproj.И сколько я находил в инете примеров программ отправки почты - ни одна не компилируется - все время говорит "Undeclared identifier: 'AuthenticationType" Может кто-то все-таки знает как из Delphi 2005 почту отправить? Или у меня липа какая-то стоит? Или там копаться где-то еще надо? А то говорят - такая типа продвинутая и удобная версия,облегчающая работу программиста...облегчение конечно большое... |
| Автор: <Spawn> 31.3.2005, 07:16 |
| Хех, сумел я ее все таки запустить и вот что увидел - теперь это свойство назвается AuthType и имеет значения atDefault, atNone, atSASL |
| Автор: Snowy 31.3.2005, 07:25 | ||||||
Естественно. Я имел ввиду компоненты Indy. Их можно закачать.
Судя по обсуждениям на форумах, лучше использовать D7 или D6. Про D8 и D2005 отзывы не лучшие.
Она определяет тип аутентификации. С большой долей уверенности можно сказать, что будет работать и без такого определения. |
| Автор: p0s0l 31.3.2005, 09:31 |
| Перенесено из раздела Дельфи |
| Автор: Guest 31.3.2005, 15:53 | ||
А как же тогда аутентификация будет? Ведь в этой строке её тип указывается! Не зря же она присуствовала в проге! Просто теперь,как выяснилось,надо писать AuthType. |
| Автор: Guest 31.3.2005, 15:54 | ||
А вместо atLogin теперь писать atDefault? |
| Автор: Snowy 31.3.2005, 16:00 | ||||
Будет принято значение по умолчанию.
Да. Хотя по идее она и так должна быть Default. |
| Автор: Неизвестный программист 1.4.2005, 02:48 |
| Большое спасибо за ответ!А еще прошу разъяснить следующие вещи: что означают слова nil и with как в этой программе обрабатываются исключительные ситуации (что значит "on e:Exception do" и откуда переменная e.message). |
| Автор: FRAGNATIC 1.4.2005, 02:54 | ||
| nil - 0 обнулить чёнить или в функцию передать если не известно значение чего либо with - "c" тоесть с чем-то что-то делать дапустим
|
| Автор: Snowy 1.4.2005, 07:29 | ||||||
nil - указатель на ничто. Применяется либо для зануления указателей (если присваиваем переменной), либо как параметр (когда хотим указать, что мы не собираемся ни на что указывать). with - используется зля укорачивания кода. Этим словом мы указываем, что будем работать со свойствами данного объекта. Например
Оттуда и взялась, что тут ты указал, что зовут ее так. Это обработка исключительных ситуаций. Почитай в хелпе. Создается класс-исключение. Чтобы получить его текст вручную, а не ловить стандартное окно об ошибке и требуется такая конструкция. |
| Автор: Неизвестный программист 1.4.2005, 16:20 |
| Когда я убираю "try" из такого фрагмента: // deliver message with TIdSMTP.Create(nil) do try Host := smtpServer; if (authUsername <> '') then begin AuthenticationType := atLogin; Username := authUsername; Password := authPassword; end; Connect; Send(msg); finally Free; end; мне почему-то говорят: Undeclared identifier: 'AuthType' Undeclared identifier: 'Username' Undeclared identifier: 'Password' Undeclared identifier: 'Connect' Undeclared identifier: 'Send' Undeclared identifier: 'Free' Ведь "try" же управляет обработкой исключительных ситуаций? Почему тогда удаление "try" так повлияло на все остальное? |
| Автор: _hunter 1.4.2005, 16:25 |
| потома как ты begin забыл дописать и with начинает влиять только на первую строку |
| Автор: Guest 1.4.2005, 20:48 | ||
Loquerisne Latine??? |
| Автор: Неизвестный программист 2.4.2005, 06:36 |
| А как бы сделать так,чтобы почтовые компоненты кодировку не трогали?У меня PHP-скрипт на локальном сервере в заголовок письма вставляет "Content-Type: text/html;charset=windows-1251",а когда письмо доходит,в нем почему-то остается только "Content-Type:text/html".И тема письма становится такой: ?KOI8-R?B?0uXs4A==?= |
| Автор: <Spawn> 2.4.2005, 06:53 |
| Модератор: Пожалуйста, один топик - один вопрос. Попробуй установить кодировку в TidMessage.CharSet |
| Автор: Guest 2.4.2005, 20:58 | ||
Так я же не могу заранее знать,какая у всех писем кодировка!Нельзя ли сделать так,чтобы сообщение из стандартного ввода отсылалось таким,какое оно есть? Или может быть,есть другой способ отправки почты?Через сокеты например?А то в этих компонентах,я вижу,какой-то непродуманный способ формирования и отсылки писем применяется. |
| Автор: Неизвестный программист 4.4.2005, 04:55 |
| Или сделать так,чтобы заголовки сообщения не изменялись. |
| Автор: Snowy 4.4.2005, 07:03 | ||||
После msg := TIdMessage.Create(nil); Добавь msg.NoEncode:=true; P.S. Зарегестрируйся. Добавлено @ 07:10
Не изменялись? Они создаются с нуля. Но если тебе так важны заголовки, то удаляй ненужные из msg.HeaderList и добавляй свои. (Если удаляешь все - то на твой страх и риск - там ведь адреса откуда-куда прописаны). HeaderList - это TStringList, в котором находятся строки заголовка. Дополнительно есть msg.ExtraHeaders - дополнительные заголовки, но на настройки они не влияют. |
| Автор: Неизвестный программист 4.4.2005, 10:14 | ||||||
Попробовал msg.NoEncode:=true. Письма стали приходить в нормальном виде,но почему-то не работает добавка заголовков в письмо.Например,конструкция типа: if (Msg.From.Address = '') then if (defaultFrom = '') then raise Exception.Create('email is missing sender''s address') else msg.From.Address := defaultFrom; Почему-то defaultFrom не подстанавливается на место обратного адреса,если его нет. Заголовки важны для указания кодировки письма.Кроме того,название темы менялось на ?koi-8? и т. д. Заголовки не с нуля формируются,а подаются на ввод программы в готовом виде,например,серверным скриптом. а как можно управлять заголовками через msg.HeaderList?Я и не собираюсь их все удалять - наоборот хочу оставить все как есть,и добавить,если каких-то не достает (дата,обратный адрес). |
| Автор: Snowy 4.4.2005, 10:36 | ||
Если заголовок уже готов - не нужно подставлять всякие адреса от кого-кому - они уже в заголовке должны быть. Просто чисти хедерлист и заполняй его своим. |
| Автор: Неизвестный программист 5.4.2005, 08:47 | ||
А можно пример?Как работать с msg.headerlist.Между прочим,я нашел только msg.header,а IdHeaderList - отдельный компонент. |
| Автор: Snowy 5.4.2005, 09:35 | ||
| Ну да. Параметр называется header. TIdHeaderList - это класс. header это как раз и есть параметр класса THeaderList. А работать с ним нужно почти так же, как и с обычным TStringList. Разница только в том, что добавление идет не через Add, а через AddStdValues. Причем параметр обязательно должен быть вида To=mail@mail.ru То есть параетр=значение.
|
| Автор: Неизвестный программист 7.4.2005, 06:11 |
| Я написал вот так: if (msg.Headers.Values['From'] = '') then msg.Headers.Values['From'] := defaultFrom; но мне в лог-файле сказали "Bad sequence of commands". Что это значит? И вообще в каких случаях такая надпись появляется? |