все что связано с моей работой
Главная » Програмирование » SendMail. Часть 3

SendMail. Часть 3

Cегодня для начала, надо добавить библиотеки synapse в наш проект. Это можно сделать  “Проект” – “Инспектор проекта” – кнопка “Добавить” (+) — “Добавить файлы”, через “Обзор” выбрать необходимые модули из “synapse\source\lib”. В нашем случае это: smtpsend, mimemes и mimepart. Жмем “Добавить в проект”, в появившемся предупреждении о том что, модули не находятся в путях поиска, жмем “Да”. Собственно из-за этого все и затевалось. Или в “Проект” – “Параметры компилятора” — “Пути”, и в строчке “Другие модули (-Fu)” вписать путь. Желательно путь вписывать полный.

Теперь можно откомпилировать “Запуск” – “Собрать”, должно получится так:

1

Теперь можно продолжать кодить, начнем сначала. Процедура Init, должна инициализировать все переменные, обработать параметры ком. строки.

//  получить параметры
function Init:boolean;
begin
  Result:=true;
  try
    From:='';
    Server:='smtp.yandex.ru';
    UserName:='';
    Password:='';
    Subject:='';
    Body:='';
    BodyFileName:='';
    Port:=25;
    Reciepient:=TStringList.Create;
    AttachedFileName:=TStringList.Create;
    ErrCode:=0;
    ErrMsg:='';
  except
    on E:Exception do begin
      Result:=false;
      ErrCode:=errInit;
      ErrMsg:=E.Message;
    end;
  end;
end;

т.к. это у нас функция и она что-то должна вернуть, то все тело завернем в try except и в случае ошибки заполним код, сообщение об ошибке.

Пока что мы просто очищаем все переменные и создаем два объекта, список вложенных файлов и список получателей. Далее здесь, надо будет добавить обработку параметров. [Загружать ключевые параметры из реестра или ини файла, и небольшую программку которая запускаясь 1 раз в виде мастера спросит все параметры и сгенерирует файлик]

Следующая функция – Validate. Надо проверить все минимально необходимые параметры на правильность, наличие файлов и т.д. Это емкая работа, как и разбор параметров, поэтому пока опишем “каркас”, просто проверку наличия вкладываемых файлов:

//  проверить доступность файлов, наличие обязательных параметров
function Validate:boolean;
var i:longint;
begin
  Result:=true;
  i:=0;
  while i < AttachedFileName.Count do
    if not FileExists(AttachedFileName[i]) then begin
      writeln(AttachedFileName[i],' - не найден.');
      AttachedFileName.Delete(i);
    end else inc(i);
  Result:=AttachedFileName.Count>0;
end;

Если файл не найден, то просто печатаем сообщение об этом и удаляем его из списка. Почему цикл while, а не for. Из-за строки удаления ненайденного файла из списка, элемент удалили и по текущему индексу новый элемент, а for неуклонно на новом витке увеличит индекс.

Ну и хватит пока.

Комментариев нет

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.