|
|
|
package LDV::Email;
|
|
|
|
|
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
use utf8;
|
|
|
|
|
|
|
|
use Email::Simple;
|
|
|
|
use Email::Sender::Simple qw(sendmail);
|
|
|
|
|
|
|
|
sub new {
|
|
|
|
my ($class, $opts) = @_;
|
|
|
|
my $self = {
|
|
|
|
from => 'noreply@example.com',
|
|
|
|
reply => 'admin@example.com',
|
|
|
|
%$opts,
|
|
|
|
};
|
|
|
|
|
|
|
|
return bless($self, $class);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub create {
|
|
|
|
my ($self, $to, $subject, $body) = @_;
|
|
|
|
|
|
|
|
return Email::Simple->create(
|
|
|
|
body => $body, header => [
|
|
|
|
From => $self->{from},
|
|
|
|
'Reply-To' => $self->{reply} || $self->{from},
|
|
|
|
To => $to,
|
|
|
|
Subject => $subject,
|
|
|
|
],
|
|
|
|
)->as_string;
|
|
|
|
}
|
|
|
|
|
|
|
|
sub send {
|
|
|
|
my ($self, $to, $email) = @_;
|
|
|
|
|
|
|
|
eval {
|
|
|
|
sendmail($email, {from => $self->{from}, to => $to}); 1;
|
|
|
|
} or do {
|
|
|
|
return $@->message if ref $@;
|
|
|
|
return $@;
|
|
|
|
};
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
1;
|
|
|
|
|
|
|
|
=pod
|
|
|
|
|
|
|
|
=head1 NAME
|
|
|
|
|
|
|
|
LDV::Email -- simple wrapper class to work with emails
|
|
|
|
|
|
|
|
=head2 C<new>
|
|
|
|
|
|
|
|
my $email = LDV::Email->new(\%opts);
|
|
|
|
|
|
|
|
* from -- default 'From' header
|
|
|
|
* reply -- reply to this email instead 'from'
|
|
|
|
|
|
|
|
=head2 C<create>
|
|
|
|
|
|
|
|
my $email = LDV::Email->new(\%opts);
|
|
|
|
my $text = $email->create($to, $subject, $body);
|
|
|
|
|
|
|
|
Create email message with some defaults set.
|
|
|
|
Returns message text (with headers).
|
|
|
|
|
|
|
|
=head2 C<send>
|
|
|
|
|
|
|
|
my $email = LDV::Email->new(\%opts);
|
|
|
|
my $error = $email->send($to, $email);
|
|
|
|
die($result) if $error;
|
|
|
|
|
|
|
|
Send previously created email.
|
|
|
|
Return nothing on success or scalar with description on error.
|
|
|
|
|
|
|
|
=cut
|