ma_finish_delivery(3xma) — Subroutines
(c) Digital Equipment Corporation. 1994. All rights reserved.
Name
ma_finish_delivery − Concludes the delivery in progress in a session.
Syntax
OM_return_code = ma_finish_delivery (session, delivery_confirmations, non_delivery_reports)
| Argument | Data Type | Access |
| session | OM_private_object | read only |
| delivery_confirmations | OM_object | read only |
| non_delivery_reports | OM_object | read only |
| return_code | OM_return_code |
C Binding
OM_return_code ma_finish delivery (session, delivery_confirmations, non_delivery_reports) OM_private_object session;
OM_object delivery_confirmations;
OM_object non_delivery_reports;
Arguments
SessionAn established MA session between the Client and the Service, in which a delivery is in progress; an instance of the Session class.
Delivery Confirmations
One or more delivery confirmations for the users to which the message was delivered; an instance of the Local Delivery Confirmations class.
This argument may be omitted.
You should indicate the absence of this argument by using a null pointer.
Non Delivery ReportsIndicates the user or users to which the message cannot be delivered, or the user to whom the report cannot be delivered; an instance of the Local NDR class.
Omit this argument if there are no such users.
The argument’s absence is indicated by the null pointer.
Description
This routine concludes the delivery in progress in a session. If there is no delivery in progress, the routine returns a No Such Object error.
If the object is a message, the Client should supply non-delivery reports to indicate the users to whom the message is non-deliverable. The Client may optionally supply delivery confirmations for users to whom a message was successfully delivered. If the object is a report, the non-delivery reports should indicate a single user to whom the report is non-deliverable.
If the Client does not confirm delivery or non-delivery for all of the recipients on a message, the Service assumes that the message has been delivered to the recipients not covered by a delivery confirmation or non-delivery report.
If the object is a message, the Client should indicate those users to whom the message is temporarily, rather than permanently, non-deliverable. If the object is a report, the Client should indicate a single user to whom the report is temporarily non-deliverable. The Client must define the circumstances that cause temporary non-deliverability. (The Service accepts any circumstances as causes of temporary failure.)
If the object is a message, the Service:
•Issues delivery reports for the users to whom the message has been delivered, and considers that it has transferred responsibility for the message to the Client.
•Issues non-delivery reports for the users to whom the message is permanently non-deliverable.
•Marks the message as unavailable, for a period of ten minutes, for the users who are temporarily unable to accept delivery. After ten minutes have elapsed, the message is returned to the Delivery queue and marked as unreserved.
If the object is a report and is temporarily non-deliverable to the user, the Service returns the report to the delivery queue. If the user takes delivery of the report then the Service considers that it has transferred responsibility for the report to the Client.
Return Values
MH_RC_FEATURE_UNAVAILABLE
OM_MEMORY_INSUFFICIENT
OM_NETWORK_ERROR
OM_NO_SUCH_OBJECT
OM_NOT_PRESENT
MH_RC_SESSION_NOT_BUSY
OM_SUCCESS
OM_SYSTEM_ERROR
MH_RC_WRONG_CLASS
Plus errors returned from:
om_create
om_instance
om_put
Examples
This example shows the calls for both Start Delivery and Finish Delivery. In practice, an application would not call Finish Delivery until it had saved a complete copy of the message to disk.
The NULL arguments in the call to Finish Delivery indicate to the MTA that delivery was successful, and that the MTA should generate delivery reports if required.
om_status = ma_start_delivery (session, &delivered_object);
om_status = ma_finish_delivery (session, NULL, NULL);