diff --git a/admin/smtp_servers.pl b/admin/smtp_servers.pl
index c01290f227..13feb0ecbc 100755
--- a/admin/smtp_servers.pl
+++ b/admin/smtp_servers.pl
@@ -107,6 +107,51 @@ if ( $op eq 'cud-add' ) {
reason => 'invalid_id'
};
}
+} elsif ( $op eq 'cud-test_email' ) {
+ my $smtp_server_id = $input->param('smtp_server_id');
+ my $smtp_server;
+
+ $smtp_server = Koha::SMTP::Servers->find($smtp_server_id)
+ unless !$smtp_server_id;
+
+ if ($smtp_server) {
+ my $test_email_address = C4::Context->preference('KohaAdminEmailAddress');
+ my $smtp_transport = $smtp_server->transport;
+
+ my $params = {
+ to => $test_email_address,
+ from => $test_email_address,
+ sender => $test_email_address,
+ subject => "Koha SMTP Test",
+ text_body => "Email is working."
+ };
+
+ my $email = Koha::Email->create($params);
+
+ try {
+ $email->send_or_die( { transport => $smtp_transport } );
+ push @messages,
+ {
+ type => 'message',
+ code => 'success_on_test'
+ };
+ } catch {
+ push @messages,
+ {
+ type => 'alert',
+ code => 'error_on_test'
+ };
+ };
+
+ } else {
+ push @messages,
+ {
+ type => 'alert',
+ code => 'error_on_test',
+ reason => 'invalid_id'
+ };
+ }
+ $op = 'list';
} elsif ( $op eq 'cud-edit_save' ) {
my $smtp_server_id = $input->param('smtp_server_id');
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smtp_servers.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smtp_servers.tt
index aff2c2774b..424669e242 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smtp_servers.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smtp_servers.tt
@@ -60,10 +60,14 @@
[% SWITCH m.code %]
[% CASE 'error_on_update' %]
An error occurred trying to open the server for editing. The passed ID is invalid.
+ [% CASE 'error_on_test' %]
+ Failed to send test email.
[% CASE 'error_on_insert' %]
An error occurred when adding the server. The library already has an SMTP server set.
[% CASE 'success_on_update' %]
Server updated successfully.
+ [% CASE 'success_on_test' %]
+ Test email sent successfully to KohaAdminEmailAddress.
[% CASE 'success_on_insert' %]
Server added successfully.
[% CASE %]
@@ -435,6 +439,13 @@
encodeURIComponent(row.name.escapeHtml()) +
'"> ' +
_("Delete") +
+ "" +
+ "\n";
+ result +=
+ ' ' +
+ _("Send test email") +
"";
return result;
},