You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

79 lines
1.4 KiB

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