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 )