MImURITranslator Class Reference

class MImURITranslator

Translates a URI in an MHTML message into a message body part file name.

MHTML messages may contain multiple HTML body parts. Each of these body parts is able to reference another body part within the same multipart structure, or a body part within a parent multipart structure [RFC2110]. These references are called URI's.

When an MHTML message is parsed by the message engine, the HTML body of each part is stored as a binary file. This interface provides a means of finding the file name of the body part that corresponds to a given a URI.

The URI resolving process has the potential to become time consuming, therefore it is broken into two steps:

Resolve asynchronously the relative URI into an absolute URI. The message body parts are recursively searched in order to find an absolute base for the relative URI [RFC2110, RFC1808].

Once a relative URI has been resolved in to an absolute URI, then the message is searched for a body part that corresponds to it [RFC2110].

If no matching body part can be found, then the absolute URI is returned to the caller in place of the filename. This absolute URI should be used to search for the required data externally, for example by using HTTP.

CImEmailMessage

Member Functions Documentation

FindUniversalResourceIdentifierFileHandleL(TMsvId, const TDesC &, const TDesC &, TRequestStatus &)

voidFindUniversalResourceIdentifierFileHandleL(TMsvIdaMessageId,
const TDesC &aBase,
const TDesC &aURI,
TRequestStatus &aStatus
)[pure virtual]

Starts an asynchronous operation to resolve a specified URI.

Parameters

TMsvId aMessageIdThe ID of the body part containing the URI which is to be resolved. CImEmailMessage::FindFirstHTMLPageFileHandleL() can be used to find the aMessageId parameter for the first HTML page in a message.
const TDesC & aBaseThe base parameter from the HTML part that contains the URI to be resolved. If there is no base parameter in the HTML, then an empty descriptor should be passed in.
const TDesC & aURIThe URI to be resolved.
TRequestStatus & aStatusAsynchronous status word

FindUniversalResourceIdentifierL(TMsvId, const TDesC &, const TDesC &, TRequestStatus &)

voidFindUniversalResourceIdentifierL(TMsvIdaMessageId,
const TDesC &rBase,
const TDesC &rURI,
TRequestStatus &aStatus
)[pure virtual]

Starts an asynchronous operation to resolve a specified URI.

Parameters

TMsvId aMessageIdThe ID of the body part containing the URI which is to be resolved. CImEmailMessage::FindFirstHTMLPageL() can be used to find the aMessageId parameter for the first HTML page in a message.
const TDesC & rBaseThe base parameter from the HTML part that contains the URI to be resolved. If there is no base parameter in the HTML, then an empty descriptor should be passed in.
const TDesC & rURIThe URI to be resolved.
TRequestStatus & aStatusAsynchronous status word

GetUniversalResourceIdentifierFileHandle(TMsvId &, RFile &)

TInt GetUniversalResourceIdentifierFileHandle(TMsvId &aLinkedEntryId,
RFile &aFile
)const [pure virtual]

Gets the results after a search.

Parameters

TMsvId & aLinkedEntryIdOn return, the message ID of the linked body part, providing one is found. Note that you should keep a record of the returned message ID as it is required for resolving any URI's that may be found in the linked body part.
RFile & aFileOn return, the file handle corresponding to the URI if successful. If not successful, then this is not valid.

GetUniversalResourceIdentifierL(TMsvId &, TBool &)

HBufC *GetUniversalResourceIdentifierL(TMsvId &aLinkedEntryId,
TBool &aFileFound
)const [pure virtual]

Gets the results after a search.

Parameters

TMsvId & aLinkedEntryIdOn return, the message ID of the linked body part, providing one is found. Note that you should keep a record of the returned message ID as it is required for resolving any URI's that may be found in the linked body part.
TBool & aFileFoundOn return, true if a linked body part has been found. It is set to false otherwise.