Cyrus::Annotator::Message has the following methods.
new(%args)
Takes the following args:
# required
* BODYSTRUCTURE => parsed bodystructure
# optional (but you need to provide SOMETHING if your code uses any
# of the accessors)
* GUID => 40 character sha1
* HEADER => Mail::Header object with headers pre-parsed
* FILENAME => path to rfc822 file
# totally optional (will be considered empty if not set)
* FLAGS => array of already set flags
* ANNOTATIONS => array of already set annotations
fh()
returns a read-only filehandle to the raw (rfc822) representation of the full message.
decode_part($Part,$Content)
Given some content, decode it from the part's content encoding and charset.
read_part_content($Part,$nbytes)
returns the first n bytes of the bodypart passed. This is a section of the bodystructure (hashref).
If no part is passed, it's the raw message.
If no 'nbytes' is passed, read the entire part.
header()
returns a Mail::Header object containing all the headers of the message.
bodystructure()
returns a structure
is a structure closely based on the IMAP BODYSTRUCTURE, decoded into a hash, including recursively
all MIME sections. In general, the following items are defined for all body structures:
• MIME-Type
• MIME-Subtype
• Content-Type
• Content-Description
• Content-Disposition
• Content-Language
Body structures which have a MIME-Type of 'multipart' contain the following items:
• MIME-Subparts
For body structures except those that have a MIME-Type of 'multipart', the following are defined:
• Content-ID
• Content-Description
• Content-Transfer-Encoding
• Content-MD5
• Size
• Lines
• Offset
• HeaderSize
guid()
returns the hex encoded (40 character) sha1 of the rfc822 representation.
has_flag($name)set_flag($name)clear_flag($name)
Check for the boolean value of a flag with $name, set the flag and remove the flag respectively.
Note that changes are not immediate. They will be applied by the annotator at the end.
For example:
$message->set_flag("\\Flagged");
get_shared_annotation($entry)get_private_annotation($entry)set_shared_annotation($entry,$value)set_private_annotation($entry,$value)clear_shared_annotation($entry)clear_private_annotation($entry)
Get, set and clear the value of an annotation, either shared or private. The "get" accessors return
a string with the value. Clear is the same as set with $value of the empty string ('').
For example:
$message->set_shared_annotation('/comment', 'Hello World');
get_changed()
returns two arrayrefs - [['flagname', 'bool']] and [['entry', 'type', 'value']], e.g.
[["\\Flagged", 1]], [['/comment', 'value.shared', 'Hello World']]