Originating Messages

Messages enqueued to the MTA fall into one of two broad classes: new messages
being originated and messages which were originated elsewhere and which are being
transferred into the MTA. The former are typically the product of a local user agent
or utility which uses the MTA SDK. The latter are generated by remote user agents,
and received by local programs such as SMTP or HTTP servers which then enqueue them
to the MTA for routing or delivery or both. In either case, it is the job of the MTA
to route the message to its destination, be it a local message store or a remote MTA.

The only distinction the MTA SDK makes between these two cases occurs when the
message’s recipient addresses are specified. For new messages being originated,
the recipient addresses should be added to both the message’s header and its
envelope. For messages originated elsewhere, the recipient addresses should only be
added to the message’s envelope. For a discussion of messages originated elsewhere,
see Transferring Messages into the MTA, and Intermediate Processing Channels.

When originating a new message, it is easiest to use the MTA_TO, MTA_CC, and MTA_BCC item codes with mtaEnqueueTo(). That tells the SDK to use the specified addresses as both the envelope
recipient list and to put them into the message’s header. When using this approach,
do not specify any From:, To:, Cc:, or Bcc: header lines in the supplied message’s
header; the SDK will add them automatically.

An example of using this approach is found in the section that follows.