Skip to content

bx-blee/mtdt

Repository files navigation

MTDT: Mail Templating, Distribution and Tracking Emacs Package

Blee Panel Controls: Show-All | Overview | Content | (1) | S&Q | Save | Quit | Bury
Panel Links: Blee Panel

See Also (Repo URls): mtdt | mailing | distribution | names | share | track

Overview

MTDT (Mail Templating, Distribution and Tracking) is part of Blee. Blee (ByStar Libre-Halaal Emacs Environment) serves as the usage environment of BISOS (ByStar Internet Services OS). BISOS forms the foundation of the “Libre-Halaal ByStar Digital Ecosystem.” ByStar is rooted in the model of proper governance of polyexistentials which rejects the Western Intelectual Propoerty Rights (IPR) regime. For a comprehensive description, please refer to the book: ‘The Nature of Polyexistentials’ – https://github.com/bxplpc/120033.

MTDT is developed in elisp with COMEEGA (Collaborative Org-Mode Enhanced Emacs Generalized Authorship). Think of COMEEGA as inverse of literate programming. Please follow Blee-COMEEGA conventions when editing MTDT elisp files.

MTDT augments the Emacs email environment (Gnus) by providing templates for mailings and distributions. You can think of MTDT as a Libre-Halaal Convivial equivalent of Constant Contact for Emacs. MTDT allows you to create Mailing Tempaltes with content in 1) Plain Text, 2) Org-Msg, 3) LaTeX and 4) Plain Html. The Mailing Templates can then be used to Send or Distribute to Recipients. Recipients can be derived from Names in address books such as BBDB3.

Table of Contents

Abstract – Concepts and Terminoloy

Emacs has a very rich email environment. The scope of Emacs email environment is primarily that of sending, receiving, processing, searching, archiving and integration with address books, org-mode and other global minor-modes. Mail Templating, Distribution and Tracking (MTDT) are currently not well supported. In the context of Email Marketting, in the proprietary world, things like SendGrid and Constant Contact have appeared on the scene. Such capabilities are best supported when they are integrated with the MUA. Hence, it does make sense to build much MTDT capabilities inside of emacs. Mass email distribution, email commencing and email templating have much overlap.

To talk about email in detail and precisely we need a rich and explicit vocabulary to refer to well defined concepts and abstractions. We use four sources for our vocabulary and concepts. 1) X.400 Specifications, 2) Internet Email RFCs Specifications, 3) Gnus Manuals, 4) Our own extenstions (see below).

MARMEE – Multi-Account Resident Mail Exchange Environment

MTDT exists on top of MARMEE and uses MARMEE facilities for sending and receiving email. See https://github.com/bisos-pip/marmee for details.

A Mailing

A Mailing-File is a partial or complete email that can be used to Compose a message. A Mailing-File can reside anywhere on the file system. A Mailing-File can become part of MTDT (internalized in MTDTD) by being Derived.

A <<Derived-Mailing>> always maps to a Mailing-File. A Derived-Mailing can then be used for Origination. There are four types of Mailing-Files, used for 4 different purposes.:

  1. CommenceMailing. No To Line, Incompleete Content, From, Subject and Signature.
  2. TemplateMailing. To Line + Incomplete Content, From, Subject and Signature.
  3. DistributionMailing. No To Line, Complete Content, From and Subject.
  4. MuaStencilMailing. MUA uses in Reply and Forward.

(1), (2) and (3) are used for Composition. (4) is used for Replys and Forwards.

A Mailing can be any of (1), (2), (3) or (4).

A Compose-Mailing can be any of (1), (2) or (3).

Compose – Native-Compose and External-Compose

<<Compose>> is the act of starting to write a new email. Replying and Forwarding are distinct and different from Composing. Composition can be from scratch or through a Derived Mailing.

MTDT currently supports 4 different Compose-Frameworks for composing. These are 1) Plain Text, 2) Org-Msg, 3) LaTeX and 4) Html.

Mailings with Compose-Frameworks of (1) and (2) are always invoked as Native-Compose.

Mailings with Compose-Frameworks of (3) and (4)can be invoked as Native-Compose or External-Compose. Native-Compose of (3) and (4) allow for editing of headers but not body. External-Compose of (3) and (4) allow for editing of body and headers.

Origination – Union of Compose, Reply or Forward

<<Origination>> is the act of starting a Compose, Reply or Forward.

Mailing Invocation Functions

A Mailing-Invocation is the act of invoking a relevant function to a Derived-Mailing.

A Mailing-Invocation is labled with Mailing-Inv-

For CommenceMailing and TemplateMailing and DistributionMailing

  • Mailing-Inv-Compose (auto determination of Mailing-Inv-Native-Compose or Mailing-Inv-External-Compose)
  • Mailing-Inv-Native-Compose
  • Mailing-Inv-External-Compose (Copies the LaTeX environment)

With Selected-Recipients, for CommenceMailing and TemplateMailing and DistributionMailing

  • Mailing-Inv-Dist-Compose
  • Mailing-Inv-Dist-Native-Compose
  • Mailing-Inv-Dist-External-Compose (Copies the LaTeX environment)

With Selected-Recipients, for DistributionMailing

  • Mailing-Inv-Dist-Send

With Selected-Recipients-Forms-File, for DistributionMailing

  • Mailing-Inv-Dist-Send
  • Mailing-Inv-Dist-Compose
  • Mailing-Inv-Dist-Dispatch (Based on DispatchControl, either Mailing-Inv-Dist-Send or Mailing-Inv-Dist-Compose )

Related Mailing Buffers and Directories

The following Mailing Bufers are used.

  • Mailing-Buffer — That of Mailing-File
  • Compose-Buffer — The unsent-buffer used for Native or External Composition
  • unsent-buffer — Traditional buffer used by emacs
  • sent-buffer — After sending

Abstract – Layering

Implemetation of MTDT is layered. Each layer is implemented as an Emacs package. See MTDT-Layering for details.

MTDT-Mailings Layer

This is an overview of <<MTDT-Mailings Layer>>.

The primary concept of MTDT-Mailings is the X-Mailing-Name File. This is a file that contains a complete or a partial email. Both its headers and its body can then be customized by MTDT facilities. X-Mailing-Name File s contain some special headers that direct and customize operations of MTDT facilities. These MTDT Headers include:

  • X-Mailing-Name: is a string that is used to internalize and identify the X-Mailing-Name File to MTDT. There is two-way and one-to-one mapping between these two. The Derive family of of functions of MTDT are used create this mapping. Once Derived, the X-Mailing-Name File can be accessed through its X-Mailing-Name:. X-Mailing-Name File can be anywhere in the file system and are not part of MTDT untill they are Derived.
  • X-ComposeFwrk: specifies the framework (mode) to be used for handling the body of an X-Mailing-Name File. When the body of the message is in org-mode, OrgMsg mode is used. Valid values of
    1. Plain Text, 2) Org-Msg, 3) LaTeX and 4) Plain Html.

    See mailing ‘s Blee-Panel for details.

  • X-MailingParams: specifies named parameters for use by MTDT.
  • X-MailingParams: :extSrcBase <dirPathOrNil> specifies as to whether or not the body of the message is to be considered External or Native. External only applies to X-ComposeFwrk: Org-Msg, LaTeX. For a X-Mailing-Name File whose body was produced using external facilities such as LaTeX (lcntProc.sh), when X-MailingParams: :extSrcBase <dirPath> is set, when sendingEnvironment is created, the entire directory of X-Mailing-Name File is copied to the sendingEnvironment environemnt.
    • X-MTDT-Customize: specifies a path to an elisp file, or a function that can run in the sendingEnvironment to customize both headers and body of the outgoing message.

See mailing ‘s Blee-Panel for details.

X-Mailing-Name File can be used for different purposes, including as a:

  1. CommenceMailing. 2) TemplateMailing. 3) DistributionMailing. 4) MuaStencilMailing.

The above types each have a Selected instance.

When a Selected mailing is Sent it first becomes an OutGoingMessage.

See mailing ‘s Blee-Panel for details.

MTDT Headers (Tabular Summary)

Header NameValuesImplementationComments
X-MailingNameAnyTextb:mtdt:mailings.elderive creates function name maping to mailingFile
X-MailingDocnil
X-MailingDocpathInformational - Path to file which created content
X-ComposeFwrkbasicb:mtdt:mailings.elPlain Text
X-ComposeFwrkorgMsgb:mtdt:mailings.elunsent buffer is to be in OrgMsg mode
X-ComposeFwrklatexb:mtdt:mailings.elextSrcBase determines Native of External
X-ComposeFwrkhtmlb:mtdt:mailings.elextSrcBase determines Native of External
X-ComposeFwrkofSelMailingb:mtdt:mailings.elUsed in Stensils for Replies/Forwards
X-MailingParams::type compose
X-MailingParams::extSrcBase nil

Related Headers (Tabular Summary)

Header NameValuesImplementationComments
Return-PathAnyTextb:mtdt:mailings.el
X-EnvelopeAnyTextb:mtdt:mailings.el
X-Message-SMTP-MethodqmailUses Qmail Inject

MTDT-Distributions Layer

This is an overview of <<MTDT-Distributions Layer>> which builds on the MTDT-Mailings Layer.

The primary concept of MTDT-Distributions is the elisp abstraction of Recipients. Recipients apply to a single OutGoingMessage. A list of Recipients constitutes a RecipientsList. A Distribution is the exercising of a RecipientsList to an OutGoingMessagesList where each Recipients is applied to each OutGoingMessage.

When a RecipientsList is selected it comes the SelectedRecipientsList.

MTDT-Names Layer

This is an overview of <<MTDT-Names Layer>> which builds on the MTDT-Distributions Layer and MTDT-Mailings Layer.

The primary concept of MTDT-Names is the elisp abstraction of Name and Names. A Name maps to a single entry in the AddressBook say bbdb. Names can be converted to RecipientsList.

MTDT-Share Layer

This is an overview of <<MTD-Share Layer>> which builds on the MTDT-Names Layer and MTDT-Distributions Layer and MTDT-Mailings Layer.

Based on a SelectedRecipientsList MTDT facilities can provide for Sharing when using Dire-mode or through interfacing with the browser.

MTDT-Tracking Layer

This is an overview of <<MTD-Tracking Layer>> which builds on the MTD-Share Layer and MTDT-Names Layer and MTDT-Distributions Layer and MTDT-Mailings Layer.

Sending and distributions can be tracked based on the information provided by logs of injection, submission and Non-Delivery-Reports and Delivery-Reports and Receipt-Notification.

All of that tracking can be arranged per OutGoingMessage.

See MARMEE for details.

MTDT Installation

As with all blee packages, blee-installation and straight-installation information is provided.

As always, blee-installation is verified and with straight-installation you are on your own.

Blee Installation

/bisos/blee/env3/libs/bnpa:mtdt.el
/bisos/blee/env3/libs/bnpa:mtdt-mailing.el
/bisos/blee/env3/libs/bnpa:mtdt-distribution.el

Straight Installation

(progn
   (straight-use-package '(mtdt-mailing :type git :host github :repo "bx-blee/mtdt"))
   (straight-use-package '(mtdt-mailing :type git :host github :repo "bx-blee/mtdt-mailing"))
   (straight-use-package '(mtdt-mailing :type git :host github :repo "bx-blee/mtdt-distribution"))
   )

MTDT Features Summary

MTDT allows you to create Mailing Tempaltes with content in 1) Plain Text, 2) Org-Msg, 3) LaTeX and 4) Plain Html.

  • Mailings Content Creation
    • Plain Text Native – Content of Mailings and Templates
    • Org-Msg Native (with html exports) – OrgMsg https://github.com/jeremy-compostella/org-msg is a GNU/Emacs global minor mode mixing up Org mode and Message mode to compose and reply to emails.
    • LaTeX External (with HaVeA html exports and pdf of content attachment)
    • Html External
  • Mailings Content External Composition
    • Latex (Lcnt)
    • HTML Editor
  • Mailings Customization
    • Header Customization
    • Content Customization
  • Mail Templates – Mailings with pre-specified recipients
  • Reply and Forward Stensils
  • Mailings Selection
  • Extensive Global Minor Mode Menus
  • Mail Sending and Origination Editing
    • Batch
    • UnSent Buffer Editing
    • External Compostion/Editing
  • MTDT-Send – AddressBook (bbdb) Integration
  • MTDT-Distribution
  • Distribution List Selection
  • MTDT-Share
    • Dired Mail Sharing
    • Browser Mail Sharing

Blee Panels and Documentation

Documentation of MTDT is in the form of a series of related panels. Primary MTDT Blee-Panel is ./panels/mtdt/_nodeBase_/fullUsagePanel-en.org. With some limitations, MTDT can be used as a stand alone Emacs package.

Key components of BISOS and Blee that interact with MTDT include:

  • MARMEE – Multi-Account Resident Mail Exchange Environment
  • LCNT – ByStar Libre Content production, publication
  • Mailings, Names, Dist facilities of BISOS

MTDT Usage and Examples

The examples directory in each of the MTDT packages includes relevant examples.

See ./examples/recipientsList.el for details.

MTDT-Layering, Packages URLs and Overview

<<MTDT-Layering>> Analysis and implementation of MTDT lends itself well to layering. This table, provides a summary.

MTDTLayerPackage RepoDescription
LayersNameURL
1<<mailings>>bx-blee/mtdt-mailingCreate&Use of Mailings/Templates/Stensils
2<<distributions>>bx-blee/distributionDistribute to recips lists
3<<names>>bx-blee/mtdt-namesUse AddressBook to create recips
4<<shares>>bx-blee/mtdt-shareSend from browser/dired/etc
5<<tracking>>bx-blee/mtdt-trackHandle Non Delivery Reports etc

A graphical overview of the layering MTDT model is provided below.

./images/mtdtModel.jpg

The graphviz below provides an overview of the key concepts and abstractions of MTDT packages.

./images/mtdtConcepts.svg

The graphviz below provides an overview of headers used in MTDT-Mailings. See https://github.com/bx-blee/mtdt-mailing for more details.

./images/mtdtConcepts_l0.svg

The graphviz below provides an overview of headers used in MTDT-Mailings. See https://github.com/bx-blee/mtdt-mailing for more details.

./images/mtdtConcepts_l1.svg

The graphviz below provides an overview of headers used in MTDT-Distributions. See https://github.com/bx-blee/mtdt-distribution for more details.

./images/mtdtConcepts_l2.svg

The graphviz below provides an overview of headers used in MTDT-Share. See https://github.com/bx-blee/mtdt-share for more details.

./images/mtdtConcepts_l3.svg

About

Mail Templating Distribution and Tracking

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors