Email-Outlook-Message
view release on metacpan or search on metacpan
lib/Email/Outlook/Message.pm view on Meta::CPAN
} else {
push @result, $name;
}
}
return join ", ", @result;
}
sub _find_name_in_addresspool {
my ($self, $name) = @_;
my $addresspool = $self->{ADDRESSES};
foreach my $address (@{$addresspool}) {
if ($name eq $address->name) {
return $address->display_address;
}
}
return;
}
# TODO: Don't really want to need this!
sub _clean_part_header {
my ($self, $part) = @_;
$part->header_set('Date');
unless ($part->content_type =~ m{ ^ multipart / }x) {
$part->header_set('MIME-Version')
};
return;
}
sub _body_plain_character_set {
my $self = shift;
my $body_encoding = $self->{BODY_PLAIN_ENCODING};
$self->_body_character_set($body_encoding)
}
sub _body_html_character_set {
my $self = shift;
my $body_encoding = $self->{BODY_HTML_ENCODING};
$self->_body_character_set($body_encoding)
}
sub _body_character_set {
my $self = shift;
my $body_encoding = shift;
my $codepage = $self->{CODEPAGE};
if (defined $body_encoding && $body_encoding eq "001F") {
return "UTF-8";
} elsif (defined $codepage) {
return $MAP_CODEPAGE->{$codepage} || "CP$codepage";
} else {
return 'CP1252';
}
}
sub _create_mime_plain_body {
my $self = shift;
my $charset = $self->_body_plain_character_set;
my $body_str = $self->{BODY_PLAIN};
if ($charset ne "UTF-8") {
# In this case, the body is a string of octets and needs to be decoded.
$body_str = Encode::decode($charset, $body_str);
}
return Email::MIME->create(
attributes => {
content_type => "text/plain",
charset => $charset,
disposition => "inline",
encoding => "8bit",
},
body_str => $body_str
);
}
sub _create_mime_html_body {
my $self = shift;
return Email::MIME->create(
attributes => {
content_type => "text/html",
charset => $self->_body_html_character_set,
disposition => "inline",
encoding => "8bit",
},
body => $self->{BODY_HTML}
);
}
# Implementation based on the information in
# http://www.freeutils.net/source/jtnef/rtfcompressed.jsp,
# and the implementation in tnef version 1.4.5.
my $MAGIC_COMPRESSED_RTF = 0x75465a4c;
my $MAGIC_UNCOMPRESSED_RTF = 0x414c454d;
my $BASE_BUFFER =
"{\\rtf1\\ansi\\mac\\deff0\\deftab720{\\fonttbl;}{\\f0\\fnil \\froman "
. "\\fswiss \\fmodern \\fscript \\fdecor MS Sans SerifSymbolArial"
. "Times New RomanCourier{\\colortbl\\red0\\green0\\blue0\n\r\\par "
. "\\pard\\plain\\f0\\fs20\\b\\i\\u\\tab\\tx";
sub _create_mime_rtf_body {
my $self = shift;
my $data = $self->{BODY_RTF};
my ($size, $rawsize, $magic, $crc) = unpack "V4", substr $data, 0, 16;
my $buffer;
if ($magic == $MAGIC_COMPRESSED_RTF) {
$buffer = $BASE_BUFFER;
my $output_length = length($buffer) + $rawsize;
my @flags;
my $in = 16;
while (length($buffer) < $output_length) {
if (@flags == 0) {
@flags = split "", unpack "b8", substr $data, $in++, 1;
}
my $flag = shift @flags;
if ($flag eq "0") {
$buffer .= substr $data, $in++, 1;
} else {
my ($a, $b) = unpack "C2", substr $data, $in, 2;
( run in 3.060 seconds using v1.01-cache-2.11-cpan-5837b0d9d2c )