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.
64 lines
1.1 KiB
64 lines
1.1 KiB
10 years ago
|
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 send {
|
||
|
my ($self, $to, $subject, $body) = @_;
|
||
|
|
||
|
eval {
|
||
|
my $email = Email::Simple->create(
|
||
|
header => [
|
||
|
From => $self->{from},
|
||
|
'Reply-To' => $self->{reply} || $self->{from},
|
||
|
To => $to,
|
||
|
Subject => $subject,
|
||
|
],
|
||
|
body => $body);
|
||
|
sendmail($email, {from => $self->{from}}); 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<send>
|
||
|
|
||
|
my $email = LDV::Email->new(\%opts);
|
||
|
my $error = $email->send($to, $subject, $body);
|
||
|
die($result) if $error;
|
||
|
|
||
|
=cut
|