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:

  • EmailAddressType Dies ist ein Auswahllistenfeld vom Typ EmailAddressType und kann als eindeutiger Schlüssel verwendet werden.
  • EmailAddress Textfeld 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:

  • EmailAddressOwnerId Guid des Datensatzes, zu der die E-Mail-Adresse zugeordnet ist (generell, ParentGuid von OrmSubOwnedEmailAddress). Dieses Feld wird benötigt, um im Nachhinein noch den Empfänger (beispielsweise einen Kontakt) zu identifizieren.
  • EmailAddress Text 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

  • ormSendable Der zu versendende Datensatz
  • fieldNameFrom Der Feldname einer Teil-Datentabelle von Typ OrmSubLinkedEmailAddress. Es darf nur ein Teil-Datensatz vorhanden sein, der als Absender der E-Mail verwendet wird.
  • fieldNameTo Der Feldname einer Teil-Datentabelle von Typ OrmSubLinkedEmailAddress. Die Empfänger der E-Mail
  • fieldNameReplyTo Der Feldname einer Teil-Datentabelle von Typ OrmSubLinkedEmailAddress. Die “Antworten-An”-Adressen der E-Mail.
  • fieldNameCC Der Feldname einer Teil-Datentabelle von Typ OrmSubLinkedEmailAddress. Die Kopie-Empfänger der E-Mail
  • fieldNameBCC Der Feldname einer Teil-Datentabelle von Typ OrmSubLinkedEmailAddress. Die Blind-Kopie-Empfänger der E-Mail
  • fieldNameSubject Textfeld mit dem Betreff der E-Mail
  • fieldNameBody Textfeld 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.
  • fieldNamePriority Ein Auswahllistenfeld vom Typ EnumPriority

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

  • from E-Mail Adresse des Absenders
  • to Komma oder Semikolon separierte Liste mit E-Mail Adressen der Empfänger
  • subject Der Betreff der E-Mail
  • body Unformatierter 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.
  • cc Komma oder Semikolon separierte Liste mit E-Mail Adressen der Kopie-Empfänger
  • bcc Komma oder Semikolon separierte Liste mit E-Mail Adressen der Bliend-Kopie-Empfänger
  • replyTo Komma oder Semikolon separierte Liste mit E-Mail Adressen der Antworten-An-Adressen
  • priority Auswahllistenwert von@EnumPriority@
  • checkLimits Sollen 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");