summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2019-04-02 20:10:48 +0200
committerDaniel Friesel <derf@finalrewind.org>2019-04-02 20:10:48 +0200
commit4787dbae15118edcf17f503b6de37ce645d19cc3 (patch)
tree4ede51a588a04bd960d3ed4fdc9c3eb320dfb0ff
parent68718860e29f5ce1c2c10afc99c0bfeb9943d6d6 (diff)
move mailing to sendmail helper
-rwxr-xr-xlib/Travelynx.pm3
-rw-r--r--lib/Travelynx/Controller/Account.pm15
-rw-r--r--lib/Travelynx/Helper/Sendmail.pm40
3 files changed, 44 insertions, 14 deletions
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm
index 234f1b8..6bdc133 100755
--- a/lib/Travelynx.pm
+++ b/lib/Travelynx.pm
@@ -12,6 +12,7 @@ use List::Util qw(first);
use List::MoreUtils qw(after_incl before_incl);
use Travel::Status::DE::IRIS;
use Travel::Status::DE::IRIS::Stations;
+use Travelynx::Helper::Sendmail;
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(
'get_departures' => sub {
my ( $self, $station, $lookbehind ) = @_;
diff --git a/lib/Travelynx/Controller/Account.pm b/lib/Travelynx/Controller/Account.pm
index eaff06a..d908948 100644
--- a/lib/Travelynx/Controller/Account.pm
+++ b/lib/Travelynx/Controller/Account.pm
@@ -2,9 +2,6 @@ package Travelynx::Controller::Account;
use Mojo::Base 'Mojolicious::Controller';
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);
sub hash_password {
@@ -143,17 +140,7 @@ sub register {
$body .= " * Verwendeter Browser gemäß User Agent: ${ua}\n\n\n";
$body .= "Impressum: ${imprint_url}\n";
- my $reg_mail = Email::Simple->create(
- 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);
+ my $success = $self->sendmail->custom($email, 'Registrierung bei travelynx', $body);
if ($success) {
$self->app->dbh->commit;
$self->render( 'login', from => 'register' );
diff --git a/lib/Travelynx/Helper/Sendmail.pm b/lib/Travelynx/Helper/Sendmail.pm
new file mode 100644
index 0000000..c110a29
--- /dev/null
+++ b/lib/Travelynx/Helper/Sendmail.pm
@@ -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;