
// При поступлении письма, если это не стандартный пакет, то мы его обрабатываем

const
    InvoiceSubj = 'script';
    InvoiceSenderAddress = 'borzov@solr.ru';
    CheckMPMessages = false;
    SendAnswer = true;
    SendAnswerOnError = true;
    //ExportDir = 'c:\in\';

    
var
    Result :integer;
      //возврат - result 0,1,... 0 - ничего не делать, предполагается. что скрипт все сам сделал.
      //1 - стандартно, скрипт или ничего не сказал или не отработал.


    VARID :int64; // предопределенная переменная. ID письма.
    VARExport_dir :string; // каталог экспорта
    VARUSE_Date_As_Subdir :string;
    VARADDRESSBOOK_ID :int64;
    VARADDRESSBOOK_NAME :string;
    VARADDRESSBOOK_ENABLED :boolean;
    VARADDRESSBOOK_MAIL :string;
    VARADDRESSBOOK_EXTERNAL_CODES :string;
    VARADDRESSBOOK_AUTOMAIL_SCRIPT :string;
    

var
  MailMessage :TMailMessage;
  Script :TMyFastScript;
begin

  MailMessage := TMailMessage.create1(selfscript);
  try
    MailMessage.ID := VARID;
    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.
