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.
126 lines
3.5 KiB
126 lines
3.5 KiB
package NGCP::Panel::Utils::Email;
|
|
|
|
use Sipwise::Base;
|
|
use Template;
|
|
use Email::Sender::Simple qw();
|
|
use Email::Simple;
|
|
use Email::Simple::Creator;
|
|
use Email::Sender::Transport::Sendmail qw();
|
|
|
|
sub send_email {
|
|
my %args = @_;
|
|
my $subject = $args{subject};
|
|
my $body = $args{body};
|
|
my $from = $args{from};
|
|
my $to = $args{to};
|
|
|
|
my $transport = Email::Sender::Transport::Sendmail->new;
|
|
my $email = Email::Simple->create(
|
|
header => [
|
|
To => $to,
|
|
From => $from,
|
|
Subject => $subject,
|
|
],
|
|
body => $body,
|
|
);
|
|
return Email::Sender::Simple->send($email, { transport => $transport } );
|
|
}
|
|
|
|
sub send_template {
|
|
my ($c, $vars, $subject, $body, $from, $to) = @_;
|
|
my $t = Template->new;
|
|
|
|
my $processed_body = "";
|
|
$t->process(\$body, $vars, \$processed_body) ||
|
|
die "error processing email template body, type=".$t->error->type.", info='".$t->error->info."'";
|
|
|
|
my $processed_subject = "";
|
|
$t->process(\$subject, $vars, \$processed_subject) ||
|
|
die "error processing email template, type=".$t->error->type.", info='".$t->error->info."'";
|
|
|
|
send_email(
|
|
subject => $processed_subject,
|
|
body => $processed_body,
|
|
from => $from,
|
|
to => $to,
|
|
);
|
|
#my $template_processed = process_template({
|
|
# subject => $subject,
|
|
# body => $body,
|
|
# from_email => $from,
|
|
# to => $to,
|
|
#},$vars);
|
|
#
|
|
#send_email(
|
|
# subject => $template_processed->{subject},
|
|
# body => $template_processed->{body},
|
|
# from => $template_processed->{from_email},
|
|
# to => $template_processed->{to},
|
|
#);
|
|
|
|
return 1;
|
|
}
|
|
|
|
sub new_subscriber {
|
|
my ($c, $subscriber, $url) = @_;
|
|
|
|
my $template = $subscriber->contract->subscriber_email_template;
|
|
return unless($template);
|
|
my $email = $subscriber->contact ?
|
|
$subscriber->contact->email : $subscriber->contract->contact->email;
|
|
|
|
my $vars = {
|
|
url => $url,
|
|
subscriber => $subscriber->username . '@' . $subscriber->domain->domain,
|
|
};
|
|
|
|
my $body = $template->body;
|
|
my $subject = $template->subject;
|
|
|
|
return send_template($c, $vars, $subject, $body, $template->from_email, $email);
|
|
}
|
|
|
|
sub password_reset {
|
|
my ($c, $subscriber, $url) = @_;
|
|
|
|
my $template = $subscriber->contract->passreset_email_template;
|
|
return unless($template);
|
|
my $email = $subscriber->contact ?
|
|
$subscriber->contact->email : $subscriber->contract->contact->email;
|
|
|
|
my $vars = {
|
|
url => $url,
|
|
subscriber => $subscriber->username . '@' . $subscriber->domain->domain,
|
|
};
|
|
|
|
my $body = $template->body;
|
|
my $subject = $template->subject;
|
|
|
|
return send_template($c, $vars, $subject, $body, $template->from_email, $email);
|
|
}
|
|
sub process_template{
|
|
my ($c, $tmpl, $vars) = @_;
|
|
my $t = Template->new;
|
|
my $tmpl_processed;
|
|
foreach(qw/body subject from_email to/){
|
|
$tmpl_processed->{$_} = "";
|
|
if($tmpl->{$_}){
|
|
$t->process(\$tmpl->{$_}, $vars, \$tmpl_processed->{$_})
|
|
|| die "error processing email template $_, type=".$t->error->type.", info='".$t->error->info."'";
|
|
}
|
|
}
|
|
return $tmpl_processed;
|
|
}
|
|
#just to make all processgin variants through one sub
|
|
#sub process_template_object{
|
|
# my ($c, $tmpl, $vars, $tmpl_hash) = @_;
|
|
# $tmpl_hash //= {};
|
|
# foreach(qw/body subject from_email/){
|
|
# $tmpl_hash->{$_} = $tmpl->get_column($_);
|
|
# }
|
|
# return process_template($c, $tmpl_hash, $vars);
|
|
#}
|
|
1;
|
|
|
|
# vim: set tabstop=4 expandtab:
|