mail::account::readMessageAttributes — Return message metadata
#include <libmail/mail.H>
#include <libmail/envelope.H>
#include <libmail/structure.H>
class myCallbackMessage : public mail::callback::message {
public:
void success(std::string msg);
void fail(std::string msg);
void messageEnvelopeCallback(size_t messageNumber,
const mail::envelope &envelopeArg);
void messageReferencesCallback(size_t messageNumber,
const std::vector<std::string> &referencesArg);
void messageArrivalDateCallback(size_t messageNumber,
time_t datetime);
void messageSizeCallback(size_t messageNumber,
unsigned long size);
void messageStructureCallback(size_t messageNumber,
const mail::mimestruct &messageStructure);
void messageTextCallback(size_t messageNumber, std::string text);
};
std::cout << (float)myMessageCallback.messageTextCompleted /
(float)myMessageCallback.messageTextEstimatedSize * 100
<< "% completed." << endl;
mail::account *account;
account->readMessageAttributes( |
const std::vector<size_t> msgList, |
mail::account::MessageAttributes attributes, | |
myCallbackMessage
&callback) ; |
mail::account::readMessageAttributes
requests metadata of messages in the currently open folder.
msgList
specifies a
list of messages. Messages are numbered starting with message
#0 and up to one less than mail::account::getFolderIndexSize(3x)()
(when mail::account::getFolderIndexSize
returns
6, the messages are numbered 0 through 5). Only the messages
that appear in msgList
are processed by this
request. attributes
is a logical-or of the following constants:
When the message was added to the folder
(myCallback.messageArrivalDateCallback
).
Estimated message size, in bytes (myCallback.messageSizeCallback
).
Message's envelope headers (myCallback.messageEnvelopeCallback
,
and possibly myCallback.messageReferencesCallback
).
messageEnvelopeCallback
receives a mail::envelope object that
describes the "envelope", or a message summary (sender,
recipients, subject, etc...). In some instances the
messageReferencesCallback
callback will also be invoked, with an an array of
message IDs taken from the References
header. In other instances
the mail::envelope will
already have the references
populated
with the same information.
messageReferencesCallback
may be
invoked before or after the messageEnvelopeCallback
function, if
at all. The application should be prepared to merge the
information returned by these two callbacks. As noted
below, multiple callback methods may be invoked in any
order, and the application should not make any
assumption as to the relative order in which these two
methods will be invoked.
For example, it is perfectly feasible to have a
request for envelopes of two messages result in two
messageEnvelopeCallback
callbacks, then two messageReferencesCallback
callbacks;
or two instances of messageEnvelopeCallback
followed by a
messageReferencesCallback
that refers to the same message.
Returns a mail::mimestruct object that
enumerates the message's MIME content (myCallback.messageStructureCallback
).
myCallback.messageStructureCallback
receives a reference to a mail::mimestruct object that
refers to the entire message. If the message contains
attachments, the mail::mimestruct::getChild
method
returns pointers to mail::mimestruct objects which
refer to the individual MIME attachments.
Metadata information requested by each one of these
constants is returned by invoking the corresponding callback
method in callback
.
When requesting two or more items at once the callback
functions may be invoked in any order. When requesting
metadata from more than one message the callback functions
are invoked one for each requested message. Each callback
function receives the requested metadata item together with
messageNumber
- which
message this metadata item relates to. The callback functions
may be invoked in any message order.
For example, when requesting both ENVELOPE
and MIMESTRUCTURE
, the possibilities are:
ENVELOPE
s for all
messages first, then all MIMESTRUCTURE
s.
The ENVELOPE
and the
MIMESTRUCTURE
for the
first message, then the ENVELOPE
and the MIMESTRUCTURE
for the next message,
and so on.
The mail::envelope and mail::mimestruct objects are destroyed immediately after their corresponding callback method terminates. The application should copy any objects it intends to use later.
The application must wait until callback
's success
or fail
method is invoked. The success
method is invoked when this request
is succesfully processed. The fail
method is invoked if this request
cannot be processed. The application must not destroy
callback
until either
the success
or fail
method is invoked.
callback
's
fail
method may be invoked
even after other callback methods were invoked. This
indicates that the request was partially completed before
the error was encountered.
Multiple applications may have the same account and
folder opened at the same time. It is possible that a
message referenced by this request was already deleted by
another application. Depending on the underlying server
implementation this will result in either a failed request,
invoking callback.fail
, or
the request completing (callback.success
invoked) but without
invoking any callback function that refer to the
message.