The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Eve::Email;

use parent qw(Eve::Class);

use strict;
use warnings;

use Email::Sender::Simple qw(sendmail);
use Email::Simple;
use Email::Simple::Creator;

=head1 NAME

B<Eve::Email> - a wrapper for the C<Email::Sender::Simple> library.

=head1 SYNOPSIS

    use Eve::Email;

    my $mailer = Eve::Email->new();

    $mailer->send(to => $address, subject => $subject, body => $body);

=head2 Constructor arguments

=over 4

=item C<from>

The from address line that will be added to each sent email.

=back

=head1 METHODS

=head2 B<init()>

=cut

sub init {
    my ($self, %arg_hash) = @_;
    Eve::Support::arguments(\%arg_hash, my ($from));

    $self->{'_from'} = $from;

    return;
}

=head2 B<send()>

Send an email body with a certain subject to a certain recipient.

=head3 Arguments

=over 4

=item C<to>

=item C<subject>

=item C<body>

=back

=cut

sub send {
    my ($self, %arg_hash) = @_;
    Eve::Support::arguments(\%arg_hash, my ($to, $subject, $body));

    my $email = Email::Simple->create(
        header => [
            To      => $to,
            From    => $self->_from,
            Subject => $subject,
        ],
        body => $body);

    sendmail($email);
}

=head1 LICENSE AND COPYRIGHT

Copyright 2012 Igor Zinovyev.

This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.


=head1 AUTHOR

=over 4

=item L<Igor Zinovyev|mailto:zinigor@gmail.com>

=back

=cut

1;