@@ -, +, @@ $ kshell k$ prove t/db_dependent/Koha/SMTP/Server.t --- Koha/SMTP/Server.pm | 38 +++++++++++++++++++++++++++++++ cpanfile | 1 + t/db_dependent/Koha/SMTP/Server.t | 29 ++++++++++++++++++++++- 3 files changed, 67 insertions(+), 1 deletion(-) --- a/Koha/SMTP/Server.pm +++ a/Koha/SMTP/Server.pm @@ -21,6 +21,8 @@ use Koha::Database; use Koha::Exceptions::Object; use Koha::SMTP::Servers; +use Email::Sender::Transport::SMTP; + use base qw(Koha::Object); =head1 NAME @@ -100,6 +102,42 @@ sub library { return Koha::Library->_new_from_dbic($self->_result->library); } +=head3 transport + + my $transport = $smtp_server->transport; + sendmail( $message, { transport => $transport } ); + +Returns an I object that can be used directly +with Email::Sender. + +=cut + +sub transport { + my ($self) = @_; + + my $params = { + host => $self->host, + port => $self->port, + }; + + $params->{ssl} = $self->ssl + unless $self->ssl eq 'disabled'; + + $params->{timeout} = $self->timeout + if $self->timeout; + + $params->{sasl_username} = $self->user_name + if $self->user_name; + + $params->{sasl_password} = $self->password + if $self->password; + + + my $transport = Email::Sender::Transport::SMTP->new( $params ); + + return $transport; +} + =head3 to_api_mapping This method returns the mapping for representing a Koha::SMTP::Server object --- a/cpanfile +++ a/cpanfile @@ -36,6 +36,7 @@ requires 'Digest::MD5', '2.36'; requires 'Digest::SHA', '5.43'; requires 'Email::Date', '1.103'; requires 'Email::MessageID', '1.406'; +requires 'Email::Sender', '1.300030'; requires 'Email::Valid', '0.190'; requires 'Exception::Class', '1.38'; requires 'File::Slurp', '9999.13'; --- a/t/db_dependent/Koha/SMTP/Server.t +++ a/t/db_dependent/Koha/SMTP/Server.t @@ -17,7 +17,7 @@ use Modern::Perl; -use Test::More tests => 2; +use Test::More tests => 3; use Test::Exception; use Test::Warn; @@ -118,3 +118,30 @@ subtest 'store() tests' => sub { $schema->storage->txn_rollback; }; + +subtest 'transport() tests' => sub { + + plan tests => 4; + + $schema->storage->txn_begin; + + my $server = $builder->build_object( + { + class => 'Koha::SMTP::Servers', + value => { ssl => 'disabled' } + } + ); + + my $transport = $server->transport; + + is( ref($transport), 'Email::Sender::Transport::SMTP', 'Type is correct' ); + is( $transport->ssl, 0, 'SSL is not set' ); + + $server->set({ ssl => 'ssl' })->store; + $transport = $server->transport; + + is( ref($transport), 'Email::Sender::Transport::SMTP', 'Type is correct' ); + is( $transport->ssl, 'ssl', 'SSL is not set' ); + + $schema->storage->txn_rollback; +}; --