Rinchi-Outlook
view release on metacpan or search on metacpan
lib/Rinchi/Outlook.pm view on Meta::CPAN
$md5->new();
$md5->addfile(*FH);
my $fingerprint = $md5->hexdigest();
close FH;
$attachment->MD5($fingerprint);
if(exists($fingerprints{$fingerprint})) {
$attachment->PathName($fingerprints{$fingerprint});
unlink $path;
print "Duplicate file \'$path\' deleted.\n";
} else {
$fingerprints{$fingerprint} = $path;
}
}
}
$document->printToFile('C:/mail/personal_folders.xml');
#========================================
use strict;
use Rinchi::Outlook;
my $source = 'C:/mail/personal_folders.xml';
my $document = Rinchi::Outlook->parsefile($source);
my @attachments = $document->getElementsByTagName('attachment');
open HTML,'>','C:/mail/attachment/index.html';
print HTML "<html>\n <head>\n <title>Index of Attachments</title>\n </head>\n <body>\n <h1>Index of Attachments</h1>\n <table border=\"1\" cellspacing=\"0\">\n";
print HTML " <tr><th>Display Name</th><th>Subject</th><th>Sender</th><th>Path Name</th><th>FileName</th></tr>\n";
foreach my $attachment (@attachments) {
my $link = $attachment->PathName;
my @l = split('\/',$link);
$link = pop @l;
printf HTML " <tr><td><a href=\"%s\">%s</a></td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\n",$link,$attachment->DisplayName,$attachment->getParentNode->getParentNode->Subject,$attachment->getParentNode->getParentNode->SenderName,$atta...
}
print HTML " </table>\n </body>\n</html>\n";
close HTML;
=head1 DESCRIPTION
Microsoft Outlook 11.0 Object Library
=head2 EXPORT
None by default.
=head1 METHODS
=cut
my %sax_handlers = (
'Init' => \&handle_init,
'Final' => \&handle_final,
'Start' => \&handle_start,
'End' => \&handle_end,
'Char' => \&handle_char,
'Proc' => \&handle_proc,
'Comment' => \&handle_comment,
'CdataStart' => \&handle_cdata_start,
'CdataEnd' => \&handle_cdata_end,
'Default' => \&handle_default,
'Unparsed' => \&handle_unparsed,
'Notation' => \&handle_notation,
'ExternEnt' => \&handle_extern_ent,
'ExternEntFin' => \&handle_extern_ent_fin,
'Entity' => \&handle_entity,
'Element' => \&handle_element,
'Attlist' => \&handle_attlist,
'Doctype' => \&handle_doctype,
'DoctypeFin' => \&handle_doctype_fin,
'XMLDecl' => \&handle_xml_decl,
);
my @elem_stack;
my $Document;
#=================================================================
# Init (Expat)
sub handle_init() {
my ($expat) = @_;
$Document = Rinchi::Outlook::Document->new();
push @elem_stack,$Document;
}
#=================================================================
# Final (Expat)
sub handle_final() {
my ($expat) = @_;
}
#=================================================================
# Start (Expat, Tag [, Attr, Val [,...]])
sub handle_start() {
my ($expat, $tag, %attrs) = @_;
my $Element = $Document->createElement($tag);
foreach my $attr (keys %attrs) {
$Element->setAttribute($attr,$attrs{$attr});
}
$elem_stack[-1]->appendChild($Element) if(@elem_stack);
push @elem_stack,$Element;
}
#=================================================================
# End (Expat, Tag)
sub handle_end() {
my ($expat, $tag) = @_;
my $Element = pop @elem_stack;
}
#=================================================================
# Char (Expat, String)
sub handle_char() {
my ($expat, $string) = @_;
$elem_stack[-1]->appendChild($Document->createTextNode($string));
}
#=================================================================
# Proc (Expat, Target, Data)
sub handle_proc() {
my ($expat, $target, $data) = @_;
}
#=================================================================
# Comment (Expat, Data)
sub handle_comment() {
my ($expat, $data) = @_;
}
#=================================================================
# CdataStart (Expat)
sub handle_cdata_start() {
my ($expat) = @_;
}
#=================================================================
# CdataEnd (Expat)
sub handle_cdata_end() {
my ($expat) = @_;
}
#=================================================================
# Default (Expat, String)
sub handle_default() {
my ($expat, $string) = @_;
}
#=================================================================
# Unparsed (Expat, Entity, Base, Sysid, Pubid, Notation)
sub handle_unparsed() {
my ($expat, $entity, $base, $sysid, $pubid, $notation) = @_;
}
#=================================================================
# Notation (Expat, Notation, Base, Sysid, Pubid)
sub handle_notation() {
my ($expat, $notation, $base, $sysid, $pubid) = @_;
}
#=================================================================
# ExternEnt (Expat, Base, Sysid, Pubid)
sub handle_extern_ent() {
my ($expat, $base, $sysid, $pubid) = @_;
}
#=================================================================
# ExternEntFin (Expat)
sub handle_extern_ent_fin() {
my ($expat) = @_;
}
#=================================================================
# Entity (Expat, Name, Val, Sysid, Pubid, Ndata, IsParam)
sub handle_entity() {
my ($expat, $name, $val, $sysid, $pubid, $ndata, $isParam) = @_;
}
#=================================================================
# Element (Expat, Name, Model)
sub handle_element() {
my ($expat, $name, $model) = @_;
}
#=================================================================
# Attlist (Expat, Elname, Attname, Type, Default, Fixed)
sub handle_attlist() {
my ($expat, $elname, $attname, $type, $default, $fixed) = @_;
}
#=================================================================
( run in 1.662 second using v1.01-cache-2.11-cpan-b16cb0d3907 )