Mail-MboxParser
view release on metacpan or search on metacpan
MboxParser/Mail.pm view on Meta::CPAN
}
$self->{LAST_ERR} = "No such field" if not $ret;
return $ret;
}
# ----------------------------------------------------------------
=over 4
=item B<from>
Returns a hash-ref with the two fields 'name' and 'email'. Returns C<undef> if
empty. The name-field does not necessarily contain a value either. Example:
print $mail->from->{email};
On behalf of suggestions I received from users, from() tries to be smart when
'name'is empty and 'email' has the form 'first.name@host.com'. In this case,
'name' is set to "First Name".
=back
=cut
sub from() {
my $self = shift;
$self->reset_last;
my $from = $self->header->{from};
my ($name, $email) = split /\s\</, $from;
$email =~ s/\>$//g unless not $email;
if ($name && ! $email) {
$email = $name;
$name = "";
$name = ucfirst($1) . " " . ucfirst($2) if $email =~ /^(.*?)\.(.*)@/;
}
return {(name => $name, email => $email)};
}
# ----------------------------------------------------------------
=over 4
=item B<to>
Returns an array of hash-references of all to-fields in the mail-header. Fields
are the same as those of C<$mail-E<gt>from>. Example:
for my $recipient ($mail->to) {
print $recipient->{name} || "<no name>", "\n";
print $recipient->{email};
}
The same 'name'-smartness applies here as described under C<from()>.
=back
=cut
sub to() { shift->_recipients("to") }
# ----------------------------------------------------------------
=over 4
=item B<cc>
Identical with to() but returning the hash-refed "Cc: "-line.
The same 'name'-smartness applies here as described under C<from()>.
=back
=cut
sub cc() { shift->_recipients("cc") }
# ----------------------------------------------------------------
=over 4
=item B<id>
Returns the message-id of a message cutting off the leading and trailing '<'
and '>' respectively.
=back
=cut
sub id() {
my $self = shift;
$self->reset_last;
$self->header->{'message-id'} =~ /\<(.*)\>/;
$1;
}
# ----------------------------------------------------------------
# --------------------
# MIME-related methods
#---------------------
# ----------------------------------------------------------------
=over 4
=item B<num_entities>
Returns the number of MIME-entities. That is, the number of sub-entitities
actually. If 0 is returned and you think this is wrong, check
C<$mail-E<gt>log>.
=back
=cut
sub num_entities() {
my $self = shift;
$self->reset_last;
# force list contest becaus of wantarray in get_entities
$self->{NUM_ENT} = () = $self->get_entities unless defined $self->{NUM_ENT};
return $self->{NUM_ENT};
}
# ----------------------------------------------------------------
=over 4
=item B<get_entities>
=item B<get_entities(n)>
Either returns an array of all MIME::Entity objects or one particular if called
with a number. If no entity whatsoever could be found, an empty list is
returned.
C<$mail-E<gt>log> instantly called after get_entities will give you some
information of what internally may have failed. If set, this will be an error
raised by MIME::Entity but you don't need to worry about it at all. It's just
for the record.
=back
=cut
sub get_entities(@) {
my ($self, $num) = @_;
$self->reset_last;
if (defined $num && $num >= $self->num_entities) {
( run in 2.048 seconds using v1.01-cache-2.11-cpan-ad19def0cd9 )