Модераторы: Snowy, Poseidon, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> СРОЧНО!Требуется консультация-почтовые компоненты 
:(
    Опции темы
Неизвестный программист
Дата 30.3.2005, 15:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите!Что делать с такой прогой:

Файл sendmail.dpr

Код

program sendmail;

{$APPTYPE CONSOLE}

uses
  Windows, Classes, SysUtils, Registry, IniFiles, IDSmtp, IdMessage, IdEmailAddress;

var

  smtpServer    : string;
  defaultFrom   : string;
  defaultDomain : string;
  messageContent: string;
  errorLogFile  : string;
  authUsername  : string;
  authPassword  : string;

  i    : integer;
  s    : string;
  ss   : TStringStream;
  msg  : TIdMessage;
  f    : TextFile;
  addr : TIdEMailAddressItem;

begin

  // read default domain from registry

  with TRegistry.Create do
  try
    RootKey := HKEY_LOCAL_MACHINE;
    if (OpenKeyReadOnly('\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters')) then
      defaultDomain := ReadString('Domain');
  finally
    Free;
  end;

  // read ini

  with TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini')) do
  try

    smtpServer    := ReadString('sendmail', 'smtp_server',    'mail.mydomain.com');
    defaultDomain := ReadString('sendmail', 'default_domain', defaultDomain);
    defaultFrom   := ReadString('sendmail', 'default_from',   defaultFrom);
    errorLogFile  := ReadString('sendmail', 'error_logfile',  '');
    authUsername  := ReadString('sendmail', 'auth_username',  '');
    authPassword  := ReadString('sendmail', 'auth_password',  '');

    if (smtpServer = 'mail.mydomain.com') or (defaultDomain = 'mydomain.com') then
    begin
      writeln('you must configure the smtp_server and default_domain in ' + fileName);
      halt(1);
    end;

  finally
    Free;
  end;

  if (errorLogFile <> '') and (ExtractFilePath(errorLogFile) = '') then
    errorLogFile := ExtractFilePath(ParamStr(0)) + errorLogFile;

  // read email from stdin

  messageContent := '';
  while (not eof(Input)) do
  begin
    readln(Input, s);
    messageContent := messageContent + s + #13#10;
  end;

  // deliver message

  try

    // load message into stream (TidMessage expects message to end in ".")

    ss  := TStringStream.Create(messageContent + #13#10'.'#13#10);
    msg := nil;

    try

      // load message

      msg := TIdMessage.Create(nil);
      msg.LoadFromStream(ss);

      // check for from and to

      if (Msg.From.Address = '') then
        if (defaultFrom = '') then
          raise Exception.Create('email is missing sender''s address')
        else
          Msg.From.Address := defaultFrom;

      if (Msg.Recipients.Count = 0) then
        if (ParamCount = 0)
          then
            raise Exception.Create('email is missing recipient''s address')
          else
            for i:= 1 to ParamCount do
              begin
                addr := Msg.Recipients.Add;
                addr.Address := ParamStr(i);
              end;



      // add date header if missing

      if (Msg.Headers.Values['date'] = '') then
        Msg.Date := now;

      // append default domain

      if (Pos('@', Msg.From.Address) = 0) then
        Msg.From.Text := Msg.From.Address + '@' + defaultDomain;

      for i := 0 to msg.Recipients.Count - 1 do
        if (pos('@', msg.Recipients[i].Address) = 0) then
          msg.Recipients[i].Address := msg.Recipients[i].Address + '@' + defaultDomain;

      // 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;

    finally
      msg.Free;
      ss.Free;
    end;

  except
    on e:Exception do
    begin
      writeln('sendmail: error during delivery: ' + e.message);

      if (errorLogFile <> '') then
      begin

        AssignFile(f, errorLogFile);
        try

          if (not FileExists(errorLogFile)) then
          begin
            ForceDirectories(ExtractFilePath(errorLogFile));
            Rewrite(f);
          end
          else
            Append(f);

          writeln(f, '[' + DateTimeToStr(Now) + '] ' + e.message);
          closeFile(f);

        except
          on e:Exception do
            writeln('sendmail: error writing to error.log: ' + e.message);
        end;

      end;

      halt(1);
    end;
  end;

end.

У меня 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 совсем недавно знаком.
Напоминаю,что программа консольная,то есть без формы.

Это сообщение отредактировал(а) Girder - 30.3.2005, 16:07
  Вверх
Snowy
Дата 30.3.2005, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Под Delphi 7 скомпилилось на ура.
Посмотрел 78-ю строку. Все нормально.
Если на нее ругается, то какие-то проблемы с TIdSMTP.
Может другую версию скачать?
В принципе необходимости в этой строке нет.
Закомментируй ее.
PM MAIL   Вверх
Неизвестный программист
Дата 30.3.2005, 18:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Snowy @ 30.3.2005, 15:58)
Может другую версию скачать?

Я вообще-то диск покупал,а не скачивал.Это что же,мне новую версию Delphi выбрасывать на помойку и взять старую?????
Цитата(Snowy @ 30.3.2005, 15:58)
В принципе необходимости в этой строке нет.
Закомментируй ее.

Разве эта строка не ответственна за авторизацию на SMTP-сервере?
Цитата(Snowy @ 30.3.2005, 15:58)

Если на нее ругается, то какие-то проблемы с TIdSMTP.

А какие могут быть проблемы?Она входит по умолчанию в Delphi и как это узнать?
  Вверх
<Spawn>
Дата 30.3.2005, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 1
Всего: 64



В Delphi 2005 стоит Indy 10(а в D7 Indy 9), если мне не изменяет память. Вот видимо в этом и траблы все, возможно, что свойство как то изменено - проверить нет возможности, т.к. Delphi 2005 слетела (только что запускал - ни один проект создать нельзя, ерроры летятsmile ).

Это сообщение отредактировал(а) <Spawn> - 30.3.2005, 19:04


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Неизвестный программист
Дата 31.3.2005, 01:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
В Delphi 2005 стоит Indy 10(а в D7 Indy 9), если мне не изменяет память. Вот видимо в этом и траблы все, возможно, что свойство как то изменено - проверить нет возможности, т.к. Delphi 2005 слетела (только что запускал - ни один проект создать нельзя, ерроры летятsmile ).

А у тебя несколько версий Delphi стоят?
Я вообще запутался с этим. Как я понял,раньше главным файлом проекта был файл с расширением *.dpr. А в Delphi 2005 - *.bdsproj.
Это что же за такое безобразие - напишешь какую-нибудь полезную прогу, а потом в новой версии тебе скажут гудбай и выкидывай свою прогу на мусорку? Идиотизм полный...
  Вверх
FRAGNATIC
Дата 31.3.2005, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



Цитата
Это что же за такое безобразие - напишешь какую-нибудь полезную прогу, а потом в новой версии тебе скажут гудбай и выкидывай свою прогу на мусорку? Идиотизм полный...

Д2005 не стоит раньше устонавливал) на ней не создовал проекты так что сказать не могу какого раширения они но вот могу сказать с вереностью на 100% что *.dpr проекты она открывает и компилит на ура)

Это сообщение отредактировал(а) FRAGNATIC - 31.3.2005, 01:22
PM MAIL   Вверх
Неизвестный программист
Дата 31.3.2005, 03:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(FRAGNATIC @ 31.3.2005, 01:18)
Д2005 не стоит раньше устонавливал) на ней не создовал проекты так что сказать не могу какого раширения они но вот могу сказать с вереностью на 100% что *.dpr проекты она открывает и компилит на ура)

Ну да!Я уже понял.При открытии файла .dpr Delphi 2005 добавляет в папку с исходниками файл проекта с другим расширением - bdsproj.И сколько я находил в инете примеров программ отправки почты - ни одна не компилируется - все время говорит "Undeclared identifier: 'AuthenticationType"
Может кто-то все-таки знает как из Delphi 2005 почту отправить? Или у меня липа какая-то стоит? Или там копаться где-то еще надо?
А то говорят - такая типа продвинутая и удобная версия,облегчающая работу программиста...облегчение конечно большое...
  Вверх
<Spawn>
Дата 31.3.2005, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 1
Всего: 64



Хех, сумел я ее все таки запустить и вот что увидел - теперь это свойство назвается AuthType и имеет значения atDefault, atNone, atSASL smile


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Snowy
Дата 31.3.2005, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Цитата
Я вообще-то диск покупал,а не скачивал.

Естественно. Я имел ввиду компоненты Indy. Их можно закачать.
Цитата
овую версию Delphi выбрасывать на помойку и взять старую?????

Судя по обсуждениям на форумах, лучше использовать D7 или D6.
Про D8 и D2005 отзывы не лучшие.
Цитата
Разве эта строка не ответственна за авторизацию на SMTP-сервере?

Она определяет тип аутентификации.
С большой долей уверенности можно сказать, что будет работать и без такого определения.
PM MAIL   Вверх
p0s0l
Дата 31.3.2005, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 1
Всего: 112



Перенесено из раздела Дельфи


--------------------
С уважением, г-н Посол.
PM   Вверх
Guest
Дата 31.3.2005, 15:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Snowy @ 31.3.2005, 07:25)
Цитата (Неизвестный программист @ 30.3.2005, 18:50)
Разве эта строка не ответственна за авторизацию на SMTP-сервере?

Она определяет тип аутентификации.
С большой долей уверенности можно сказать, что будет работать и без такого определения.


А как же тогда аутентификация будет? Ведь в этой строке её тип указывается! Не зря же она присуствовала в проге! Просто теперь,как выяснилось,надо писать AuthType.
  Вверх
Guest
Дата 31.3.2005, 15:54 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
Хех, сумел я ее все таки запустить и вот что увидел - теперь это свойство назвается AuthType и имеет значения atDefault, atNone, atSASL smile

А вместо atLogin теперь писать atDefault?
  Вверх
Snowy
Дата 31.3.2005, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Цитата(Guest @ 31.3.2005, 15:53)
А как же тогда аутентификация будет?

Будет принято значение по умолчанию.

Цитата(Guest @ 31.3.2005, 15:54)
А вместо atLogin теперь писать atDefault?

Да. Хотя по идее она и так должна быть Default.
PM MAIL   Вверх
Неизвестный программист
Дата 1.4.2005, 02:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Большое спасибо за ответ!А еще прошу разъяснить следующие вещи:
что означают слова nil и with
как в этой программе обрабатываются исключительные ситуации (что значит "on e:Exception do" и откуда переменная e.message).
  Вверх
FRAGNATIC
Дата 1.4.2005, 02:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



nil - 0 обнулить чёнить или в функцию передать если не известно значение чего либо
with - "c" тоесть с чем-то что-то делать дапустим
Код

with button1 do
begin
 и тут уже можно изменять какие-то свойства button1 но при этом бутон 1 писать не надо просто дапустим 
caption:='a';
end

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0599 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.