Application - Email

The "Email" application is designed to pull email from an SMTP server within the POD (FOD) parse the contents into the Fautore JSON protocol and transfer it to the Fautore server that then places the passed data into the Fautore message queue. From there the data is distributed per the instructions defined by a Coterie Chief or Tribe Chieftain.

Location

The Fautore "Email" application is installed to the "{Fautore Home}/apps" directory

Registration

The "Email" application registers to Fautore using the fauAppReg function as does any other application. Registration currently occurs by initiating the below command from the command line.

fauAppEmail.pl -r

Custom Registration Values

None

Operation

The Fautore "Email" application is a pull mechanism triggered to run by Fautore on an interval basis. Run interval is set via the standard application configuration screens of Fautore.

Run Steps

The following steps describe a typical run of the Fautore "Email" application.

  1. Initiated by Fautore at predetermined interval
  2. Pull run data from Fautore database using standard API call fauGetAppData
  3. Log into remote SMTP server
  4. Loop
    1. Pull email from inbox
    2. Parse email data into standard JSON data structure
    3. Send JSON to Fautore using using Fautore API call: qMsg
    4. Remove email from queue upon successful transfer
      1. Log error upon failure
  5. End Loop
  6. Disconnect from mail server

JSON Data Map

Data pulled from the mail server must be mapped into the JSON structure for Fautore for processing into the message queue.

Source JSON Description
From Source:Member The full address of email sender
To Dest:Member The full address of intended recipient (this will essentially be the name of the email queue from which the email was extracted.)
Subject Summary The email subject line
Body Detail The full body content of the email
Attachment Object The email attachment.

Additional Considerations

Multiple Attachments

Need to take multiple attachments into consideration down the line.

  • Make the "Object" element of the JSON protocol structure a list (array) capable of holding many objects.
  • Create a delimiter character so that multiple objects can be stored in the single "Object" element.
  • Resend identical message content for every attachment

Current preference is to make the JSON element an array capable of hlding more than one object as a list.

  1. No worries about chosen delimiter being meaningful in the stored data.
  2. No worries about exceeding defined element size due to size of multiple objects in one field.
  3. Less network traffic over resending messages for each object.

The concern of the array approach is how to handle this structure once received by Fautore which is currently setup to handle one object per message.

  1. Create a full message in the message queue that replicates all the other data of the message.
  2. Create a separate "objects" table with a foreign key back to the message queue that ties each object back to the same message.
Creating a separate message in the queue for each object is currently favored for its simplicity, both in storage and data management when reconstructing outbound messages. Moving to the more normalized breakdown of tables can be undertaken as a future project if warranted.