
// При поступлении письма, если это не стандартный пакет, то мы его обрабатываем

const
    InvoiceSubj = 'script';
    InvoiceSenderAddress = 'borzov@solr.ru';
    CheckMPMessages = false;
    SendAnswer = true;
    SendAnswerOnError = true;
    //ExportDir = 'c:\in\';




var Result :integer; // задается приложением. Ожидается, что изменим его на 0, если не хотим ,чтобы программа пыталась обработать его дальше
var ID :double ; // ID - письма
    //MemStream :TMemoryStream;

var
  MailMessage :TMailMessage;
  Script :TMyFastScript;
begin

  MailMessage := TMailMessage.create1(selfscript);
  try
    MailMessage.ID := ID;
    if (MailMessage.MessageID>'') // существует
       and (not CheckMPMessages or mailMessage.isMPMessage)
       and (mailMessage.subject = InvoiceSubj)
       and (MailMessage.SenderAddress=InvoiceSenderAddress)
       and (MailMessage.Body<>'')
    then begin

       try
           Script := TMYFastScript.create(selfscript);
           try
             Script.SyntaxType := 'PascalScript';
             Script.Lines.text := MailMessage.Body;
             if not Script.compile
             then begin
                 raiseException(Script.GetErrorString);
             end;

             Script.execute;

             if SendAnswer
             then
             with TMailMessage.create1(selfscript) do
             try
               ID := 0;
               Recipients := mailmessage.senderaddress;
               subject := 'Скрипт отработан';
               if Script.errormsg=''
               then
                 body := 'Ошибок не обнаружено'
               else
                 body := 'Ошибка: '+Script.ErrorMSG+ ' : pos: '+script.errorpos;

               Save;
             finally
               free
             end;


           finally
             Script.free;
           end;


       except
          if SendAnswerOnError
          then
          with TMailMessage.create1(selfscript) do
          try
            ID := 0;
            Recipients := mailmessage.senderaddress;
            subject := 'Ошибка при исполнении скрипта';
            body := exceptionMessage;
            Save;
          finally
             free
          end;
          Createhinte(ExceptionMessage,'Ошибка при исполнении скрипта');
       end;

       mailMessage.Isprocessed := true;
       Result := 0;
    end;


  finally
    MailMessage.free
  end;

end.
