Skriptschnittstelle enaio® exchange

enaio® exchange 11.0 »

Basisklassen für projektspezifische Skripte (C#)

namespace OsExchange.Server.Scripting

  • public class OsExchangeScript

    • Hierüber können Protokolle ausgegeben werden:

      public IOsExchangeScriptHost HOST { get; }

    • Hierüber steht das aktuelle E-Mail Objekt zur Verfügung:

      public IScriptMailItem MAIL { get; }

    • Wird aufgerufen, bevor die Bearbeitung der E-Mail beginnt:

    • public virtual void OnBeforeExecution(IOnScriptEventBeforeExecution evt)
      {
      }

    • Wird aufgerufen, nachdem die E-Mail auf dem Exchange Server geöffnet wurde:

      public virtual void OnAfterOpenMail(IOnScriptEventAfterOpenmail evt)
      {
      }
    • Wird aufgerufen, nachdem die E-Mail temporär gespeichert wurde:

      public virtual void OnAfterSaveMail(IOnScriptEventAfterSaveFile evt)
      {
      }
    • Wird aufgerufen, nachdem die Verarbeitung der E-Mail abgeschlossen ist:

      public virtual void OnAfterProcessing(IOnScriptEventAfterProcessing evt)
      {
      }
    • Wird vor der Exchange-Server-Verarbeitung der E-Mail (z.B. Anlagen entfernen) aufgerufen:

      public virtual void OnBeforeExchangeProcessing(IOnScriptEventBeforeExchangeProcessing evt)
      {
      }

      Beispiel:

      namespace OsExchange.Server.Scripting
      {
        public class ExampleScript : OsExchangeScript 
        {
          public override void OnBeforeExecution(IOnScriptEventBeforeExecution evt)
          {
            HOST.LOG("Mailboxname: " + HOST.CurrentMailbox);
           }
        }
      }
  • public interface IOsExchangeScriptHost

    • Der übergebene String wird ins enaio® exchange-serverlog geschrieben (Modus DEBUG):

      void LOG(string text);

    • Der Name des aktuellen Benutzerpostfachs:

      string CurrentMailbox { get; }

  • public interface IScriptMailItem

    • Ermittelt, ob die E-Mail bereits geöffnet ist. Ansonsten ist RDOMAIL 'null':

      bool IsOpen { get; }

    • Ein Outlook Redemption IRDOMAIL Objekt der aktuell geöffneten E-Mail:

      IRDOMail RDOMAIL { get; }

    • E-Mail Adresse des Absenders der E-Mail:

      string SenderAddress { get; }

    • E-Mail-Adresse des Absenders einer Journal E-Mail:

      string RepresentingSenderAddress { get; }

  • public interface IOnScriptEventBeforeExecution

    • Führt zum Abbruch der aktuellen Verarbeitung:

      bool Cancel { set; }

  • public interface IOnScriptEventAfterOpenmail

    • Führt zum Abbruch der aktuellen Verarbeitung:

      bool Cancel { set; }

    • Setzt den Status der aktuellen E-Mail auf 'Archiviert':

      void SetMailArchived();

  • public interface IOnScriptEventAfterSaveFile

    • Name der Datei, unter der die aktuelle E-Mail gespeichert wurde:

      string Filename { get; }

  • public interface IOnScriptEventAfterProcessing

    • Verarbeitungsinformationen:

      IScriptProcessingInfos ProcessingInfos { get; }

  • public interface IOnScriptEventBeforeExchangeProcessing

    • Führt zum Abbruch der aktuellen Verarbeitung:

      bool Cancel { set; }

  • public interface IScriptProcessingInfos

    • Ermittelt, ob die E-Mail Verarbeitung erfolgreich ausgeführt wurde:

      bool Success { get; }

    • Adresse von enaio® server:

      string OsServer {get;}

    • Objekt-ID der abgelegten E-Mail:

      int OsMailObjektId {get;}

    • Objekttyp der abgelegten E-Mail:

      string OsObjecttype {get;}

    • Schrankname der abgelegten E-Mail:

      string OsCabinet {get;}

Basisklassen für projektspezifische Import-Skripte

namespace OsMail.MAPI.FileImport

  • public class ImportScript

    • Es kann der enaio®-Benutzer für den Importjob zurückgegeben werden:

      public virtual string OnGetUser(ImportJobScriptData data)
      {
      return string.Empty;
      }
    • Es kann eine geöffnete E-Mail sowie deren Dateiname zurückgegeben werden:

      public virtual IRDOMail OnGetOpenMail
      (ImportJobScriptData data, 
      IRDOSession session, 
      out string mailFileName)
      {
      mailFileName = string.Empty;
      return null;
      }
    • Wird nach dem Öffnen der Import-E-Mail aufgerufen:

      public virtual void OnAfterOpenMail(IImportScriptMailValues mail)
      {
      }
    • Wird vor dem Rückschreiben der Ablageinformationen in die E-Mail-Datei aufgerufen:

      public virtual void OnWritebackMailDocid
      (ChangeStateMail cs, 
      DocId osid,  
      OsDoctypeParentDestination dest,
      bool notChangeMessageClass, 
      DateTime archiveDate)
      {
      }
    • Wird nach dem Import aufgerufen:

      public virtual void OnBeforeExchangeProcessing
      (IImportScriptMailValues mail)
      {
      }
    • Wird nach der Verarbeitung aber vor 'OnAfterProcessing' des allgemeinen Skripts aufgerufen:

      public virtual void OnBeforeAfterProcessing
      (ImportScriptItemProcessingInfos infos)
      {
      }
  • public class ImportJobScriptData

    • Gibt den Accountnamen des Benutzers aus:

      public string User { get; }

  • public class ImportScriptMailValues

    • Der Name des Benutzers für den Import:

      public string Username { get; }

    • Gibt an, ob das Feld 'Username' gesetzt ist:

      public bool IsUsernameSet { get; }

    • Status, ob die Verarbeitung als 'erfolgreich' abgebrochen wurde:

      public bool IsAbortedSUCCEEDED { get; }

    • Status, ob die Verarbeitung als 'fehlgeschlagen' abgebrochen wurde:

      public bool IsAbortedFAILED { get; }

    • Hierüber kann die Verarbeitung als 'erfolgreich' abgebrochen werden:

      public void AbortMailProcessing_SUCCEEDED();

    • Hierüber kann die Verarbeitung als 'fehlgeschlagen' abgebrochen werden:

      public void AbortMailProcessing_FAILED();

  • public class ImportScriptItemProcessingInfos

    • Code, falls die Verarbeitung aus dem Script heraus abgebrochen wurde:

      public ScriptInterruptExceptionType ScriptInterruptCode { get; }

    • Hierüber kann das Ergebnis der Importverarbeitung auf ‚erfolgreich‘ gesetzt werden:

      public void SetProcessingResultOk();

  • public enum ScriptInterruptExceptionType

    {
    DEFAULT,
    OK,
    ERR
    }
  • public class ScriptInterruptException : Exception

    • Erstellt eine Script-Abbruchexception mit dem betreffenden Abbruchcode:

      public ScriptInterruptException(ScriptInterruptExceptionType t);

    • Abbruchcode:

      public ScriptInterruptExceptionType InterruptionType { get; }

  • public enum ChangeStateMail

    {
    Unarchived = 0,
    ArchivedComplete = 1,
    ArchivedSeparated = 2,
    AttachmentsLinked = 3,
    MailLinked = 4,
    UNDETERMINED = 5,
    MailMinimized = 6,
    OS_MSG_FILE = 7
    }
  • public class DocId

    • enaio® Id:

      public int OsECMId { get; }

  • public class OsDoctypeParentDestination : OsDoctype

    • Enthält Informationen über den Ablageort:

      namespace OsExchange.Common.Tools

 

Beispiel-Importskript

public class MyImportScript : ImportScript
{
public override string OnGetUser(ImportJobScriptData data)
{
if (data.User == "")
return "DEFAULT_IMPORT_USER";
return String.Empty;
}
 
public override void OnAfterOpenMail(IImportScriptMailValues mail)
{
if (mail.IsUsernameSet)
if (mail.Username == "SPAM")
mail.AbortMailProcessing_SUCCEEDED();
}
 
public override void OnBeforeExchangeProcessing(IImportScriptMailValues mail)
{
/*
doSomething
 
if (failed)
*/
mail.AbortMailProcessing_FAILED();
}
 
public override void OnBeforeAfterProcessing(ImportScriptItemProcessingInfos infos)
{
if (infos.ScriptInterruptCode == ScriptInterruptExceptionType.OK)
infos.SetProcessingResultOk();
}
}