Technical

Complexity

Your first impression might be that the implementation is overly complicated - and yes, you are right. On the other hand sending emails is our core business and we regularly have to do the following things

  • Signing emails and/or attachment with X.509 certificates
  • Figuring out why sending en email goes wrong
  • Archving the emails being sent using the file system, database or commercial archiving systems

Domain Centric Approach

The configuration of the services is centered around domains whereas a domain usually maps to the mail address of the sender. A domain contains all relevant configuration information for the email being created or sent.

Application Hooks

The service provide methods which can be overriden by a derived class. Since the author has no idea about the required configuration needed by a derived class the CommonsEmailDomainEntry allows access to the corresponding configuration instance.

Determining a Domain

The domain is determined using the following steps

  • take the domain matching the sender's email address (e.g. foo@bar.com)
  • take the domain matching the sender's domain address (e.g. bar.com)
  • take the default domain