=encoding utf8

=head1 NAME

Mail::Message::Convert - conversions between message types

=head1 INHERITANCE

 Mail::Message::Convert
   is a Mail::Reporter

 Mail::Message::Convert is extended by
   Mail::Message::Convert::EmailSimple
   Mail::Message::Convert::Html
   Mail::Message::Convert::HtmlFormatPS
   Mail::Message::Convert::HtmlFormatText
   Mail::Message::Convert::MailInternet
   Mail::Message::Convert::MimeEntity
   Mail::Message::Convert::TextAutoformat

=head1 SYNOPSIS

Available methods are very converter-specific.

=head1 DESCRIPTION

This class is the base for various message (and message parts) converters.

Extends L<"DESCRIPTION" in Mail::Reporter|Mail::Reporter/"DESCRIPTION">.
 
=head2 Converters between message objects

Internally, the L<Mail::Message::coerce()|Mail::Message/"Internals"> is called when foreign objects
are used where message objects are expected.  That method will automatically
create the converting objects, and re-use them.

=over 4

=item * L<Mail::Message::Convert::MailInternet|Mail::Message::Convert::MailInternet>

Converts the simple L<Mail::Internet|Mail::Internet> messages into L<Mail::Message|Mail::Message>
objects.

=item * L<Mail::Message::Convert::MimeEntity|Mail::Message::Convert::MimeEntity>

Converts the more complicated MIME::Entity messages into
L<Mail::Message|Mail::Message> objects.

=item * L<Mail::Message::Convert::EmailSimple|Mail::Message::Convert::EmailSimple>

Converts Email::Simple messages into L<Mail::Message|Mail::Message> objects.

=back

=head2 Other converters

=over 4

=item * L<Mail::Message::Convert::Html|Mail::Message::Convert::Html>

Plays tricks with HTML/XMHTML without help of external modules.

=item * L<Mail::Message::Convert::HtmlFormatText|Mail::Message::Convert::HtmlFormatText>

Converts HTML body objects to plain text objects using the
HTML::FormatText module.

=item * L<Mail::Message::Convert::HtmlFormatPS|Mail::Message::Convert::HtmlFormatPS>

Converts HTML body objects to Postscript objects using the
HTML::FormatPS module.

=item * L<Mail::Message::Convert::TextAutoformat|Mail::Message::Convert::TextAutoformat>

Converts a text message into text using Text::Autoformat.

=back

=head1 METHODS

Extends L<"METHODS" in Mail::Reporter|Mail::Reporter/"METHODS">.
 
=head2 Constructors

Extends L<"Constructors" in Mail::Reporter|Mail::Reporter/"Constructors">.
 
=over 4

=item Mail::Message::Convert-E<gt>B<new>(%options)

 -Option--Defined in     --Default
  fields                   <see description>
  log     Mail::Reporter   'WARNINGS'
  trace   Mail::Reporter   'WARNINGS'

=over 2

=item fields => NAMES|ARRAY-OF-NAMES|REGEXS

Select the fields of a header which are to be handled.  Other
fields will not be used.  The value of this option is passed to
L<Mail::Message::Head::Complete::grepNames()|Mail::Message::Head::Complete/"Access to the header"> whenever converters feel
a need for header line selection.
By default, the C<To>, C<From>, C<Cc>, C<Bcc>, C<Date>, C<Subject>, and their
C<Resent-> counterparts will be selected.  Specify an empty list to get all
fields.

=item log => LEVEL

=item trace => LEVEL

=back

=back

=head2 Converting

=over 4

=item $obj-E<gt>B<selectedFields>($head)

Returns a list of fields to be included in the format.  The list is
an ordered selection of the fields in the actual header, and filtered
through the information as specified with L<new(fields)|Mail::Message::Convert/"METHODS">.

=back

=head2 Error handling

Extends L<"Error handling" in Mail::Reporter|Mail::Reporter/"Error handling">.
 
=over 4

=item $obj-E<gt>B<AUTOLOAD>()

Inherited, see L<Mail::Reporter/"Error handling">

=item $obj-E<gt>B<addReport>($object)

Inherited, see L<Mail::Reporter/"Error handling">

=item $obj-E<gt>B<defaultTrace>( [$level]|[$loglevel, $tracelevel]|[$level, $callback] )

=item Mail::Message::Convert-E<gt>B<defaultTrace>( [$level]|[$loglevel, $tracelevel]|[$level, $callback] )

Inherited, see L<Mail::Reporter/"Error handling">

=item $obj-E<gt>B<errors>()

Inherited, see L<Mail::Reporter/"Error handling">

=item $obj-E<gt>B<log>( [$level, [$strings]] )

=item Mail::Message::Convert-E<gt>B<log>( [$level, [$strings]] )

Inherited, see L<Mail::Reporter/"Error handling">

=item $obj-E<gt>B<logPriority>($level)

=item Mail::Message::Convert-E<gt>B<logPriority>($level)

Inherited, see L<Mail::Reporter/"Error handling">

=item $obj-E<gt>B<logSettings>()

Inherited, see L<Mail::Reporter/"Error handling">

=item $obj-E<gt>B<notImplemented>()

Inherited, see L<Mail::Reporter/"Error handling">

=item $obj-E<gt>B<report>( [$level] )

Inherited, see L<Mail::Reporter/"Error handling">

=item $obj-E<gt>B<reportAll>( [$level] )

Inherited, see L<Mail::Reporter/"Error handling">

=item $obj-E<gt>B<trace>( [$level] )

Inherited, see L<Mail::Reporter/"Error handling">

=item $obj-E<gt>B<warnings>()

Inherited, see L<Mail::Reporter/"Error handling">

=back

=head2 Cleanup

Extends L<"Cleanup" in Mail::Reporter|Mail::Reporter/"Cleanup">.
 
=over 4

=item $obj-E<gt>B<DESTROY>()

Inherited, see L<Mail::Reporter/"Cleanup">

=back

=head1 DIAGNOSTICS

=over 4

=item Error: Package $package does not implement $method.

Fatal error: the specific package (or one of its superclasses) does not
implement this method where it should. This message means that some other
related classes do implement this method however the class at hand does
not.  Probably you should investigate this and probably inform the author
of the package.

=back

=head1 SEE ALSO

This module is part of Mail-Message distribution version 3.004,
built on December 21, 2017.

Do not forget to read
L<Mail::Box-Overview>,
L<Mail::Box-Cookbook>, and
L<Mail::Box-Index>.
Examples are included in the Mail-Box distribution, directories 'examples'
and 'scripts'.

Browseable manuals, papers, and other released material van be found
at  Website: F<http://perl.overmeer.net/mailbox/>

The central modules (in separate distributions) in the MailBox suite are:
L<Mail::Message>,
L<Mail::Box>,
L<Mail::Box::IMAP4>,
L<Mail::Box::POP3>,
L<Mail::Box::Parser::C>,
L<Mail::Box::Dbx> (unpublished),
L<Mail::Transport>,
L<Object::Realize::Later>, and
L<User::Identity>.

Please post questions or ideas to the author F<markov@cpan.org>.

=head1 LICENSE

Copyrights 2001-2017 by [Mark Overmeer]. For other contributors see ChangeLog.

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
See F<http://dev.perl.org/licenses/>

