move mailing to sendmail helper

This commit is contained in:
Daniel Friesel 2019-04-02 20:10:48 +02:00
parent 68718860e2
commit 4787dbae15
3 changed files with 44 additions and 14 deletions

View file

@ -12,6 +12,7 @@ use List::Util qw(first);
use List::MoreUtils qw(after_incl before_incl); use List::MoreUtils qw(after_incl before_incl);
use Travel::Status::DE::IRIS; use Travel::Status::DE::IRIS;
use Travel::Status::DE::IRIS::Stations; use Travel::Status::DE::IRIS::Stations;
use Travelynx::Helper::Sendmail;
our $VERSION = qx{git describe --dirty} || 'experimental'; our $VERSION = qx{git describe --dirty} || 'experimental';
@ -492,6 +493,8 @@ qq{select * from pending_mails where email = ? and num_tries > 1;}
}, },
); );
$self->helper(sendmail => sub { state $sendmail = Travelynx::Helper::Sendmail->new; });
$self->helper( $self->helper(
'get_departures' => sub { 'get_departures' => sub {
my ( $self, $station, $lookbehind ) = @_; my ( $self, $station, $lookbehind ) = @_;

View file

@ -2,9 +2,6 @@ package Travelynx::Controller::Account;
use Mojo::Base 'Mojolicious::Controller'; use Mojo::Base 'Mojolicious::Controller';
use Crypt::Eksblowfish::Bcrypt qw(bcrypt en_base64); use Crypt::Eksblowfish::Bcrypt qw(bcrypt en_base64);
use Encode qw(decode encode);
use Email::Sender::Simple qw(try_to_sendmail);
use Email::Simple;
use UUID::Tiny qw(:std); use UUID::Tiny qw(:std);
sub hash_password { sub hash_password {
@ -143,17 +140,7 @@ sub register {
$body .= " * Verwendeter Browser gemäß User Agent: ${ua}\n\n\n"; $body .= " * Verwendeter Browser gemäß User Agent: ${ua}\n\n\n";
$body .= "Impressum: ${imprint_url}\n"; $body .= "Impressum: ${imprint_url}\n";
my $reg_mail = Email::Simple->create( my $success = $self->sendmail->custom($email, 'Registrierung bei travelynx', $body);
header => [
To => $email,
From => 'Travelynx <travelynx@finalrewind.org>',
Subject => 'Registrierung bei travelynx',
'Content-Type' => 'text/plain; charset=UTF-8',
],
body => encode( 'utf-8', $body ),
);
my $success = try_to_sendmail($reg_mail);
if ($success) { if ($success) {
$self->app->dbh->commit; $self->app->dbh->commit;
$self->render( 'login', from => 'register' ); $self->render( 'login', from => 'register' );

View file

@ -0,0 +1,40 @@
package Travelynx::Helper::Sendmail;
use strict;
use warnings;
use 5.020;
use Encode qw(encode);
use Email::Sender::Simple qw(try_to_sendmail);
use Email::Simple;
sub new {
my ($class) = @_;
return bless({}, $class);
}
sub custom {
my ($self, $to, $subject, $body) = @_;
my $reg_mail = Email::Simple->create(
header => [
To => $to,
From => 'Travelynx <travelynx@finalrewind.org>',
Subject => $subject,
'Content-Type' => 'text/plain; charset=UTF-8',
],
body => encode( 'utf-8', $body ),
);
if ($ENV{TRAVELYNX_DB_NAME} eq 'travelynx_deva') {
# Do not send mail in dev mode
say "sendmail to ${to}: ${subject}\n\n${body}";
return 1;
}
return try_to_sendmail($reg_mail);
}
1;