Email::Abstract - unified interface to mail representations
my $message = Mail::Message->read($rfc822) || Email::Simple->new($rfc822) || Mail::Internet->new([split /\n/, $rfc822]) || ... || $rfc822; my $email = Email::Abstract->new($message); my $subject = $email->get_header("Subject"); $email->set_header(Subject => "My new subject"); my $body = $email->get_body; $email->set_body("Hello\nTest message\n"); $rfc822 = $email->as_string; my $mail_message = $email->cast("Mail::Message");
Email::Abstract provides module writers with the ability to write representation-independent mail handling code. For instance, in the cases of Mail::Thread or Mail::ListDetector, a key part of the code involves reading the headers from a mail object. Where previously one would either have to specify the mail class required, or to build a new object from scratch, Email::Abstract can be used to perform certain simple operations on an object regardless of its underlying representation.
Email::Abstract
Mail::Thread
Mail::ListDetector
Email::Abstract currently supports Mail::Internet, MIME::Entity, Mail::Message, Email::Simple and Email::MIME. Other representations are encouraged to create their own Email::Abstract::* class by copying Email::Abstract::EmailSimple. All modules installed under the Email::Abstract hierarchy will be automatically picked up and used.
Mail::Internet
MIME::Entity
Mail::Message
Email::Simple
Email::MIME
Email::Abstract::*
Email::Abstract::EmailSimple
All of these methods may be called either as object methods or as class methods. When called as class methods, the email object (of any class supported by Email::Abstract) must be prepended to the list of arguments.
my $email = Email::Abstract->new($message);
Given a message, either as a string or as an object for which an adapter is installed, this method will return a Email::Abstract object wrapping the message.
If the message is given as a string, it will be used to construct an object, which will then be wrapped.
my $header = $email->get_header($header_name); my $header = Email::Abstract->get_header($message, $header_name); my @headers = $email->get_header($header_name); my @headers = Email::Abstract->get_header($message, $header_name);
This returns the value or list of values of the given header.
$email->set_header($header => @lines); Email::Abstract->set_header($message, $header => @lines);
This sets the $header header to the given one or more values.
$header
my $body = $email->get_body; my $body = Email::Abstract->get_body($message);
This returns the body as a string.
$email->set_body($string); Email::Abstract->set_body($message, $string);
This changes the body of the email to the given string.
my $string = $email->as_string; my $string = Email::Abstract->as_string($message);
This returns the whole email as a string.
my $mime_entity = $email->cast('MIME::Entity'); my $mime_entity = Email::Abstract->cast($message, 'MIME::Entity');
This method will convert a message from one message class to another. It will throw an exception if no adapter for the target class is known, or if the adapter does not provide a construct method.
construct
my $message = $email->object;
This method returns the message object wrapped by Email::Abstract. If called as a class method, it returns false.
Note that, because strings are converted to message objects before wrapping, this method will return an object when the Email::Abstract was constructed from a string.
This module is maintained by the Perl Email Project
http://emailproject.perl.org/wiki/Email::Abstract
Casey West, <casey@geeknest.com>
Simon Cozens, <simon@cpan.org>
Ricardo SIGNES, <rjbs@cpan.org>
Copyright 2004 by Simon Cozens
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Email::Abstract, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Email::Abstract
CPAN shell
perl -MCPAN -e shell install Email::Abstract
For more information on module installation, please visit the detailed CPAN module installation guide.