From eb79df5b7feb6e28dc98c460a96a0447d7cb99f9 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' and the exception message being recorded in the delivery_note. --- C4/Letters.pm | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/C4/Letters.pm b/C4/Letters.pm index 177a4f51f6..f253f776b1 100644 --- a/C4/Letters.pm +++ b/C4/Letters.pm @@ -1381,20 +1381,35 @@ 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 { + my $exception = $_; + _set_message_status( + { + message_id => $message->{'message_id'}, + status => 'failed', + delivery_note => $exception->message, + error_code => 'INVALID_EMAIL' + } + ); + return 0; + }; + return unless $email; if ( $is_html ) { $email->html_body( -- 2.20.1