E-Mail Adressen in Datentabellen einbinden
E-Mail-Adressen die als Adresse eines Datensatzes dienen (Beispiel: E-Mail-Adresse eines Kontaktes), werden als Teil-Datentabelle vom Typ OrmSubOwnedEmailAddress angelegt.
OrmSubOwnedEmailAddress hat die folgende Felder:
EmailAddressTypeDies ist ein Auswahllistenfeld vom TypEmailAddressTypeund kann als eindeutiger Schlüssel verwendet werden.EmailAddressTextfeld mit der E-Mail-Adresse.
E-Mail-Adressen als Felder von zu versendenen Datentabellen (Beispiel: Empfänger der E-Mail), werden als Teil-Datentabelle vom Typ OrmSubLinkedEmailAddress angelegt.
OrmSubLinkedEmailAddress hat die folgende Felder:
EmailAddressOwnerIdGuid des Datensatzes, zu der die E-Mail-Adresse zugeordnet ist (generell, ParentGuid vonOrmSubOwnedEmailAddress). Dieses Feld wird benötigt, um im Nachhinein noch den Empfänger (beispielsweise einen Kontakt) zu identifizieren.EmailAddressText mit der E-Mail-Adresse.
Versenden von Datensätzen
Das Versenden von E-Mails ist in BA auf Basis beliebiger Datentabellen möglich. Dies geht konfigurativ über die Ribbon Bar Aktionen und auch programmatisch. Dazu gibt man die entsprechenden Felder des Datensatzes an, den man versenden möchte. In der Klasse MailSend gibt es eine statische Methode SendOrm
public static void SendOrm(OrmBABase ormSendable, string fieldNameFrom, string fieldNameTo, string fieldNameReplyTo, string fieldNameCC, string fieldNameBCC, string fieldNameSubject, string fieldNameBody, string fieldNamePriority)
Parameter
ormSendableDer zu versendende DatensatzfieldNameFromDer Feldname einer Teil-Datentabelle von TypOrmSubLinkedEmailAddress. Es darf nur ein Teil-Datensatz vorhanden sein, der als Absender der E-Mail verwendet wird.fieldNameToDer Feldname einer Teil-Datentabelle von TypOrmSubLinkedEmailAddress. Die Empfänger der E-MailfieldNameReplyToDer Feldname einer Teil-Datentabelle von TypOrmSubLinkedEmailAddress. Die “Antworten-An”-Adressen der E-Mail.fieldNameCCDer Feldname einer Teil-Datentabelle von TypOrmSubLinkedEmailAddress. Die Kopie-Empfänger der E-MailfieldNameBCCDer Feldname einer Teil-Datentabelle von TypOrmSubLinkedEmailAddress. Die Blind-Kopie-Empfänger der E-MailfieldNameSubjectTextfeld mit dem Betreff der E-MailfieldNameBodyTextfeld mit dem Inhalt der E-Mail. Dies kann sowohl reiner Text als auch HTML sein. Der HTML-Inhalt der E-Mail erhält die BA-Schriftart und -größe als Vorgabe.fieldNamePriorityEin Auswahllistenfeld vom TypEnumPriority
Pre- und Postsend Events
In dem System kann sowohl ein Event vor als auch nach dem Versenden ausgeführt werden. Dazu exitistieren zwei Interfaces IPreSend und IPostSend, die man per Dependency Injection definieren kann.
Da es jeweils nur einen Handler geben kann, muss man dabei darauf achten welche Basisklasse man nutzt, ansonsten werden Funktionalitäten abgeschaltet. Mindestens müssen Sie auf den Klassen PreSendBase und PostSendBase basieren.
Ist das Modul BA.Activity eingebunden, sollten die Klassen PreSendHandler und PostSendHandler aus dem Modul verwendet werden, da sonst das ActivityDate nicht korrekt gesetzt wird.
Ist das Modul BA.CRM.Activity eingebunden, müssen es die Klassen CRMPreSendHandler und CRMPostSendHandler sein, weil sonst die Relation zum ActivityOwner nicht korrekt gesetzt.
Versenden von E-Mails ohne Verwendung von Datensätzen
Das Versenden von Datensätzen erfolgt asynchron über einen eigenen Hintergrundprozess. Dieser sorgt dafür, dass bei dem Auftreten von Fehlern mehrfach versucht wird, die Mail zu versenden. Möchte man eine E-Mail versenden ohne einen Datensätz zu erzeugen, kann man dies direkt auf dem ISMTPHelper. In diesem Fall muss das gesamte Handling der Fehler selbst vorgenommen werden.
public virtual BASMTPMail CreateMail(String from, String to, String subject, String body, string cc = null, string bcc = null, string replyTo = null, EnumPriority priority = null, bool checkLimits = true)
Parameter
fromE-Mail Adresse des AbsenderstoKomma oder Semikolon separierte Liste mit E-Mail Adressen der EmpfängersubjectDer Betreff der E-MailbodyUnformatierter Text oder HTML. Bilder müssen im HTML eingebettet sein. Der HTML Inhalt der E-Mail erhält die BA-Schriftart und -größe als Vorgabe.ccKomma oder Semikolon separierte Liste mit E-Mail Adressen der Kopie-EmpfängerbccKomma oder Semikolon separierte Liste mit E-Mail Adressen der Bliend-Kopie-EmpfängerreplyToKomma oder Semikolon separierte Liste mit E-Mail Adressen der Antworten-An-AdressenpriorityAuswahllistenwert von@EnumPriority@checkLimitsSollen dieGrößen- und die Empfängerlimitationen aus den Anwendungseinstellungen geprüft werden.
SMTPHelperBase smtpHelper = (SMTPHelperBase)Activator.CreateInstance(DIKernelProvider.Kernel.Get(typeof(ISMTPHelper)).GetType());
smtpHelper.CreateMail("user@company.org", "test@test.de", "Testmail", "Mailinhalt");


