Skriptschnittstelle enaio® exchange
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:
-
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 virtual void OnBeforeExecution(IOnScriptEventBeforeExecution evt)
{
} -
-
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 interface IRDOSession
-
Die aktive Redemption MAPI-Session:
namespace Redemption
-
-
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();
}
}