diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2019-04-02 20:10:48 +0200 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2019-04-02 20:10:48 +0200 | 
| commit | 4787dbae15118edcf17f503b6de37ce645d19cc3 (patch) | |
| tree | 4ede51a588a04bd960d3ed4fdc9c3eb320dfb0ff | |
| parent | 68718860e29f5ce1c2c10afc99c0bfeb9943d6d6 (diff) | |
move mailing to sendmail helper
| -rwxr-xr-x | lib/Travelynx.pm | 3 | ||||
| -rw-r--r-- | lib/Travelynx/Controller/Account.pm | 15 | ||||
| -rw-r--r-- | lib/Travelynx/Helper/Sendmail.pm | 40 | 
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; | 
