From 4cdf924a3b90e2fb402477aa87baf4bc74dc3f83 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Thu, 5 Aug 2021 08:00:19 +0100 Subject: [PATCH] Bug 28803: Add invalid email handling in _send_message_by_email This patch adds a try/catch block around the call to Koha::Email->create to catch and handle invalid emails being passed in the parameters. The message is marked as 'failed' with an error_code of 'INVALID_EMAIL'. Signed-off-by: Kyle M Hall --- C4/Letters.pm | 41 ++++++++++++------- .../prog/en/modules/members/notices.tt | 1 + 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/C4/Letters.pm b/C4/Letters.pm index 87b82624c6..07a47380b1 100644 --- a/C4/Letters.pm +++ b/C4/Letters.pm @@ -1389,20 +1389,33 @@ sub _send_message_by_email { ); return; }; - my $email = Koha::Email->create( - { - to => $to_address, - ( - C4::Context->preference('NoticeBcc') - ? ( bcc => C4::Context->preference('NoticeBcc') ) - : () - ), - from => $from_address, - reply_to => $message->{'reply_address'} || $branch_replyto, - sender => $branch_returnpath, - subject => "" . $message->{subject} - } - ); + my $email = try { + Koha::Email->create( + { + to => $to_address, + ( + C4::Context->preference('NoticeBcc') + ? ( bcc => C4::Context->preference('NoticeBcc') ) + : () + ), + from => $from_address, + reply_to => $message->{'reply_address'} || $branch_replyto, + sender => $branch_returnpath, + subject => "" . $message->{subject} + } + ); + } + catch { + _set_message_status( + { + message_id => $message->{'message_id'}, + status => 'failed', + failure_code => 'INVALID_EMAIL' + } + ); + return 0; + }; + return unless $email; if ( $is_html ) { $email->html_body( diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/notices.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/notices.tt index 31bd2dbb6f..5503654b66 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/notices.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/notices.tt @@ -95,6 +95,7 @@ [% IF ( QUEUED_MESSAGE.failure_code ) %] [% IF ( QUEUED_MESSAGE.failure_code == "INVALID_BORNUMBER" ) %]Invalid borrowernumber [% borrowernumber | html %] [% ELSIF ( QUEUED_MESSAGE.failure_code == 'NO_EMAIL' ) %]Unable to find an email address for this borrower + [% ELSIF ( QUEUED_MESSAGE.failure_code == "INVALID_EMAIL" ) %]Invalid email address found [% borrowernumber | html %] [% ELSIF ( QUEUED_MESSAGE.failure_code == 'NO_FROM' ) %]Missing from email address [% ELSIF ( QUEUED_MESSAGE.failure_code == 'MISSING_SMS' ) %]Missing SMS number [% ELSIF ( QUEUED_MESSAGE.failure_code == 'DUPLICATE_MESSAGE' ) %]Message is duplicate -- 2.30.1 (Apple Git-130)