SendMail vs OutLook

Автор:KaMPiLeR
Дата:19.04.2005
Просмотров:2882
Скачиваний:793
Оценка:, Оценок - 10
Скачать (rar-файл; Размер - 93299)

Обсудить в форуме

Описание

аналог sendmail под Windows. можно вызовать из userXfin.mac, и из других макросов.

на вход текстовый файл вида:

Host:smtp.mail.ru
Port:25
UserID:mailrobot
Password:pswd
FROM:mailrobot
TO:support@softlab.ru
BCC:7903ххххххх@sms.beemail.ru
FILE:sendmail.dpr
FILE:1.txt
SUBJECT:тУвБОЛ УОПЧБ ЛПМВБУЙФ!
тУвБОЛ УОПЧБ ЛПМВБУЙФ!


из командной строки выглядит так:
sendmail.exe < "имяфайла"

из макроса чтото типа:
Run ("sendmail.exe "," < имяфайла");

можно рассылать уведомления клиентам, типа "На Ваш счет поступило 100р. от ООО "АБВГД" и т.п.

Текст примера

 {$APPTYPE CONSOLE}
Program SendMail;
Uses
  SysUtils, IdMessage, IdSMTP;
Var
  ss,
  s    : AnsiString;
  MESS : TIdMessage;
  SMTP : TIdSMTP;
Begin
  SMTP:=TIdSMTP.Create(nil);
  MESS:=TIdMessage.Create(nil);


  SMTP.Port:=25;

  ss:='';
  while(true)do
  begin
    ReadLn(s);
    if(UpperCase(Copy(s,1,5))='HOST:')    then SMTP.Host                           := Copy(s,6,length(s)) else
    if(UpperCase(Copy(s,1,5))='PORT:')    then SMTP.Port                           := StrToInt(Copy(s,6,length(s))) else
    if(UpperCase(Copy(s,1,7))='USERID:')  then SMTP.UserID                         := Copy(s,8,length(s)) else
    if(UpperCase(Copy(s,1,8))='PASSWORD:')then SMTP.Password                       := Copy(s,9,length(s)) else


    if(UpperCase(Copy(s,1,5))='FROM:')    then MESS.From.Text                      := Copy(s,6,length(s)) else
    if(UpperCase(Copy(s,1,3))='TO:')      then MESS.Recipients.EMailAddresses      := Copy(s,4,length(s)) else
    if(UpperCase(Copy(s,1,3))='CC:')      then MESS.CCList.EMailAddresses          := Copy(s,4,length(s)) else
    if(UpperCase(Copy(s,1,3))='BCC:')     then MESS.BccList.EMailAddresses         := Copy(s,5,length(s)) else
    if(UpperCase(Copy(s,1,8))='SUBJECT:') then MESS.Subject                        := Copy(s,9,length(s)) else
    if(UpperCase(Copy(s,1,5))='FILE:')    then TIdAttachment.Create(MESS.MessageParts, Copy(s,6,length(s)))
    else
    if(s='')then break else ss:=s+'';
  end;

  MESS.Body.Add(ss);

  SMTP.AuthenticationType        := atNone;
  
  try
    SMTP.Connect;
  except
    on E: Exception do
    begin
      writeln('Error: SMTP.Connect');
      writeln(E.Message);
      Halt(1);
    end;
  end;

  try
    SMTP.Send(MESS);
    writeln('OK.');
  except
    on E: Exception do
    begin
      writeln('Error: SMTP.Send');
      writeln(E.Message);
      Halt(2);
    end;
  end;

  try
    SMTP.Disconnect;
    SMTP.Free;
    MESS.Free;
  except
    on E: Exception do
    begin
      writeln(E.Message);
      Halt(3);
    end;
  end;
End.