Mail-Message
view release on metacpan or search on metacpan
lib/Mail/Message.pm view on Meta::CPAN
$mailer->send($self, %args);
}
sub size()
{ my $self = shift;
$self->head->size + $self->body->size;
}
#--------------------
sub head(;$)
{ my $self = shift;
@_ or return $self->{MM_head};
my $head = shift;
unless(defined $head)
{ delete $self->{MM_head};
return undef;
}
blessed $head && $head->isa('Mail::Message::Head') or panic;
$head->message($self);
if(my $old = $self->{MM_head})
{ $self->{MM_modified}++ unless $old->isDelayed;
}
$self->{MM_head} = $head;
$self->takeMessageId unless $head->isDelayed;
$head;
}
sub get($)
{ my $self = shift;
my $field = $self->head->get(shift) or return undef;
$field->body;
}
sub study($)
{ my $head = shift->head or return;
scalar $head->study(@_); # return only last
}
sub from()
{ my @from = shift->head->get('From') or return ();
map $_->addresses, @from;
}
sub sender()
{ my $self = shift;
my $sender = $self->head->get('Sender') || $self->head->get('From');
$sender ? ($sender->addresses)[0] : (); # first specified address
}
sub to() { map $_->addresses, $_[0]->head->get('To') }
sub cc() { map $_->addresses, $_[0]->head->get('Cc') }
sub bcc() { map $_->addresses, $_[0]->head->get('Bcc') }
sub destinations()
{ my $self = shift;
my %to = map +(lc($_->address) => $_), $self->to, $self->cc, $self->bcc;
values %to;
}
sub subject() { $_[0]->get('subject') // '' }
sub guessTimestamp() { $_[0]->head->guessTimestamp }
sub timestamp()
{ my $head = $_[0]->head;
$head->recvstamp || $head->timestamp;
}
sub nrLines()
{ my $self = shift;
$self->head->nrLines + $self->body->nrLines;
}
#--------------------
sub body(;$@)
{ my $self = shift;
@_ or return $self->{MM_body};
my $head = $self->head;
$head->removeContentInfo if defined $head;
my ($rawbody, %args) = @_;
unless(defined $rawbody)
{ # Disconnect body from message.
my $body = delete $self->{MM_body};
$body->message(undef) if defined $body;
return $body;
}
blessed $rawbody && $rawbody->isa('Mail::Message::Body') or panic;
# Bodies of real messages must be encoded for safe transmission.
# Message parts will get encoded on the moment the whole multipart
# is transformed into a real message.
my $body = $self->isPart ? $rawbody : $rawbody->encoded;
$body->contentInfoTo($self->head);
my $oldbody = $self->{MM_body};
return $body if defined $oldbody && $body==$oldbody;
$body->message($self);
$body->modified(1) if defined $oldbody;
( run in 0.584 second using v1.01-cache-2.11-cpan-524268b4103 )