<<>> <> <> <> <> <> <> <<>> <> EnvelopeFormat: PROGRAM 1517 VERSION 1 = BEGIN DEPENDS UPON MailTransport (17) VERSION 5, Time (15) VERSION 2; <> Time: TYPE = Time.Time; RName: TYPE = MailTransport.RName; RecipientList: TYPE = MailTransport.RecipientList; Envelope: TYPE = MailTransport.Envelope; EnvelopeItemType: TYPE = MailTransport.EnvelopeItemType; DeliveredRecipient: TYPE = RECORD [ recipient: MailTransport.Recipient, when: Time ]; NonDeliveredRecipient: TYPE = RECORD [ recipient: MailTransport.Recipient, reason: Reason ]; Reason: TYPE = { noSuchRecipient(0), noMailboxForRecipient(1), illegalName(2), timeout(3), reportNotAllowed(4), messageTooLong(5), ambiguousRName(6), illegalCharacters(7), unsupportedBodyparts(8), unsupportedContentsType(9), transientProblem(10), contentSyntaxError(11), tooManyRecipients(12), protocolViolation(13), x400PragmaticConstraintViolation(14), x400NoBilateralAgreement(15), accessRightsInsufficientForDL(16), other(17) }; <> <> postmark: EnvelopeItemType = 0; -- Time and site of posting. Postmark: TYPE = RECORD [ postedAt: RName, time: Time.Time ]; messageID: EnvelopeItemType = 1; MessageID: TYPE = MailTransport.MessageID; <> contentsType: EnvelopeItemType=2; -- indicates format of message content. ContentsType: TYPE = MailTransport.ContentsType; <> ctNull: ContentsType = 37777777777B; -- no content ctStandardMessage: ContentsType = 4; ctReport: ContentsType = 6; -- A Mail Service-generated delivery or non-delivery report. tableOfContents: EnvelopeItemType = 3; TableOfContents: TYPE = SEQUENCE 500 OF TOCEntry; <> TOCEntry: TYPE = RECORD [ type: MailTransport.BodyPartType, sizeInBytes: LONG CARDINAL ]; <> contentsSize: EnvelopeItemType=4; -- size of message content in bytes ContentsSize: TYPE = LONG CARDINAL; originator: EnvelopeItemType = 5; -- authenticated sender of the message Originator: TYPE = RName; report: EnvelopeItemType = 6; Report: TYPE = RECORD [ originalEnvelope: Envelope, fateOfThisReport: Fate, reportType: RepType ]; FateKind: TYPE = { delivered(0), notDelivered(1) }; Fate: TYPE = CHOICE FateKind OF { delivered => DelType, notDelivered => NonDelType }; DelType: TYPE = {contentsTruncated(0), noProblem(1)}; NonDelType: TYPE = RECORD [ reason: Reason, reportCreationPostmark: Postmark ]; RepTypeKind: TYPE = { dlMember(0), other(1) }; RepType: TYPE = CHOICE RepTypeKind OF { dlMember => DLMem, other => OtherRep }; DLMem: TYPE = RECORD [ dlName: RName, invalidDLRecipients: InvalRecip ]; InvalRecip: TYPE = SEQUENCE OF NonDeliveredRecipient; OtherRep: TYPE = RECORD [ succeeded: SucList, failed: FailList ]; SucList: TYPE = SEQUENCE OF DeliveredRecipient; FailList: TYPE = SEQUENCE OF NonDeliveredRecipient; returnToName: EnvelopeItemType = 7; ReturnToName: TYPE = RName; -- default = originator <> previousRecipients: EnvelopeItemType = 8; PreviousRecipients: TYPE = RecipientList; <> gatewayPostmark: EnvelopeItemType = 9; GatewayPostmark: TYPE = Postmark; addressChangeNotice: EnvelopeItemType = 10; AddressChangeNotice: TYPE = RName; -- original recipient name <> transportOptions: EnvelopeItemType = 11; -- default = all TRUE TransportOptions: TYPE = RECORD [ returnOfContents: BOOLEAN, alternateRecipientAllowed: BOOLEAN ]; x400SpecificReportInformation: EnvelopeItemType = 12; X400SpecificReportInformation: TYPE = SEQUENCE 4 OF X400ReportItem; X400ReportItem: TYPE = SEQUENCE OF UNSPECIFIED; <> otherRecipients: EnvelopeItemType =13; OtherRecipients: TYPE = RecipientList; -- when present, contains all the original recipients priority: EnvelopeItemType = 14; <> <> <> Priority: TYPE = {nonUrgent(0), normal(1), urgent(2), unspecified(65535)}; converted: EnvelopeItemType = 15; Converted: TYPE = SEQUENCE 10 OF ConvertedItem; <> ConvertedItem: TYPE = {ia5TextToTeletex(0), teletexToTelex(1), teletexToIA5Text(2), telexToTeletex(3)}; authenticationLevelOfSender: EnvelopeItemType = 16; <> <> <> AuthenticationLevelOfSender: TYPE = {strong(0), simple(1), foreign(2), unknown(65535)}; <> <> <> <<>> <> <<>> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <<];>> <<>> END.