lufi/lib/Lufi/Controller/Mail.pm

60 lines
1.5 KiB
Perl

# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
package Lufi::Controller::Mail;
use Mojo::Base 'Mojolicious::Controller';
use Email::Valid;
sub send_mail {
my $c = shift;
my $validation = $c->validation;
return $c->render(text => 'Bad CSRF token!', status => 403) if $validation->csrf_protect->has_error('csrf_token');
my $emails = $c->param('emails');
$emails =~ s/ //g;
my @a = split(',', $emails);
my @bad;
my @good;
for my $email (@a) {
if (!Email::Valid->address($email)) {
push @bad, $email;
}
}
my $msg = '';
if (scalar(@bad)) {
$msg .= $c->l('The following email addresses are not valid: %1', join(', ', @bad))."\n";
}
$msg .= $c->l('You must give email addresses.')."\n" unless (scalar(@a));
$msg .= $c->l('The email subject can\'t be empty.')."\n" unless ($c->param('subject'));
$msg .= $c->l('The email body can\'t be empty.')."\n" unless ($c->param('body'));
if ($msg) {
return $c->render(
template => 'mail',
msg => $msg,
values => {
emails => $emails,
subject => $c->param('subject'),
body => $c->param('body')
}
)
}
$c->mail(
from => $c->config('mail_sender'),
bcc => $emails,
subject => $c->param('subject'),
data => $c->param('body')
);
return $c->render(
template => 'msg',
msg_success => $c->l('The mail has been sent.')
);
}
1;