Lines 37-42
use Koha::SMS::Providers;
Link Here
|
37 |
|
37 |
|
38 |
use Koha::Email; |
38 |
use Koha::Email; |
39 |
use Koha::DateUtils qw( format_sqldatetime dt_from_string ); |
39 |
use Koha::DateUtils qw( format_sqldatetime dt_from_string ); |
|
|
40 |
use Email::Valid; |
40 |
|
41 |
|
41 |
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); |
42 |
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); |
42 |
|
43 |
|
Lines 413-419
sub SendAlerts {
Link Here
|
413 |
my $alerts = getalert( '', 'issue', $subscriptionid ); |
414 |
my $alerts = getalert( '', 'issue', $subscriptionid ); |
414 |
foreach (@$alerts) { |
415 |
foreach (@$alerts) { |
415 |
my $borinfo = C4::Members::GetMember('borrowernumber' => $_->{'borrowernumber'}); |
416 |
my $borinfo = C4::Members::GetMember('borrowernumber' => $_->{'borrowernumber'}); |
416 |
my $email = $borinfo->{email} or next; |
417 |
my $sendAllEmailsTo = C4::Context->preference('SendAllEmailsTo'); |
|
|
418 |
my $email = $sendAllEmailsTo; |
419 |
if (!($sendAllEmailsTo && Email::Valid->address($sendAllEmailsTo))){ |
420 |
$email = $borinfo->{email} or next; |
421 |
} |
417 |
|
422 |
|
418 |
# warn "sending issues..."; |
423 |
# warn "sending issues..."; |
419 |
my $userenv = C4::Context->userenv; |
424 |
my $userenv = C4::Context->userenv; |
Lines 571-582
sub SendAlerts {
Link Here
|
571 |
# Remove the order tag |
576 |
# Remove the order tag |
572 |
$letter->{content} =~ s/<order>(.*?)<\/order>/$1/gxms; |
577 |
$letter->{content} =~ s/<order>(.*?)<\/order>/$1/gxms; |
573 |
|
578 |
|
|
|
579 |
# SendAllEmailsTo system preference to override for testing |
580 |
my $emailsTo = join( ',', @email); |
581 |
my $emailsCC = join( ',', @cc); |
582 |
my $sendAllEmailsTo = C4::Context->preference('SendAllEmailsTo'); |
583 |
if ($sendAllEmailsTo && Email::Valid->address($sendAllEmailsTo) ) { |
584 |
$emailsTo = $sendAllEmailsTo; |
585 |
$emailsCC = ''; |
586 |
} |
587 |
|
574 |
# ... then send mail |
588 |
# ... then send mail |
575 |
my $library = Koha::Libraries->find( $userenv->{branch} ); |
589 |
my $library = Koha::Libraries->find( $userenv->{branch} ); |
576 |
my %mail = ( |
590 |
my %mail = ( |
577 |
To => join( ',', @email), |
|
|
578 |
Cc => join( ',', @cc), |
579 |
From => $library->branchemail || C4::Context->preference('KohaAdminEmailAddress'), |
591 |
From => $library->branchemail || C4::Context->preference('KohaAdminEmailAddress'), |
|
|
592 |
To => $emailsTo, |
593 |
Cc => $emailsCC, |
580 |
Subject => Encode::encode( "UTF-8", "" . $letter->{title} ), |
594 |
Subject => Encode::encode( "UTF-8", "" . $letter->{title} ), |
581 |
Message => $letter->{'is_html'} |
595 |
Message => $letter->{'is_html'} |
582 |
? _wrap_html( Encode::encode( "UTF-8", $letter->{'content'} ), |
596 |
? _wrap_html( Encode::encode( "UTF-8", $letter->{'content'} ), |
Lines 629-637
sub SendAlerts {
Link Here
|
629 |
) or return; |
643 |
) or return; |
630 |
return { error => "no_email" } unless $externalid->{'emailaddr'}; |
644 |
return { error => "no_email" } unless $externalid->{'emailaddr'}; |
631 |
my $email = Koha::Email->new(); |
645 |
my $email = Koha::Email->new(); |
|
|
646 |
my $emailaddr = $externalid->{'emailaddr'}; |
647 |
my $sendAllEmailsTo = C4::Context->preference('SendAllEmailsTo'); |
648 |
$emailaddr = $sendAllEmailsTo if ($sendAllEmailsTo && Email::Valid->address($sendAllEmailsTo) ); |
632 |
my %mail = $email->create_message_headers( |
649 |
my %mail = $email->create_message_headers( |
633 |
{ |
650 |
{ |
634 |
to => $externalid->{'emailaddr'}, |
651 |
to => $emailaddr, |
635 |
from => $library->{branchemail}, |
652 |
from => $library->{branchemail}, |
636 |
replyto => $library->{branchreplyto}, |
653 |
replyto => $library->{branchreplyto}, |
637 |
sender => $library->{branchreturnpath}, |
654 |
sender => $library->{branchreturnpath}, |
Lines 1296-1310
sub _send_message_by_email {
Link Here
|
1296 |
|
1313 |
|
1297 |
my $member = C4::Members::GetMember( 'borrowernumber' => $message->{'borrowernumber'} ); |
1314 |
my $member = C4::Members::GetMember( 'borrowernumber' => $message->{'borrowernumber'} ); |
1298 |
my $to_address = $message->{'to_address'}; |
1315 |
my $to_address = $message->{'to_address'}; |
|
|
1316 |
if (!$to_address && $member) { |
1317 |
$to_address = C4::Members::GetNoticeEmailAddress( $message->{'borrowernumber'} ); |
1318 |
} |
1319 |
my $sendAllEmailsTo = C4::Context->preference('SendAllEmailsTo'); |
1320 |
$to_address = $sendAllEmailsTo if ($sendAllEmailsTo && Email::Valid->address($sendAllEmailsTo) ); |
1299 |
unless ($to_address) { |
1321 |
unless ($to_address) { |
1300 |
unless ($member) { |
1322 |
if (!$member) { |
1301 |
warn "FAIL: No 'to_address' and INVALID borrowernumber ($message->{borrowernumber})"; |
1323 |
warn "FAIL: No 'to_address' and INVALID borrowernumber ($message->{borrowernumber})"; |
1302 |
_set_message_status( { message_id => $message->{'message_id'}, |
1324 |
_set_message_status( { message_id => $message->{'message_id'}, |
1303 |
status => 'failed' } ); |
1325 |
status => 'failed' } ); |
1304 |
return; |
1326 |
return; |
1305 |
} |
1327 |
} |
1306 |
$to_address = C4::Members::GetNoticeEmailAddress( $message->{'borrowernumber'} ); |
1328 |
else { |
1307 |
unless ($to_address) { |
|
|
1308 |
# warn "FAIL: No 'to_address' and no email for " . ($member->{surname} ||'') . ", borrowernumber ($message->{borrowernumber})"; |
1329 |
# warn "FAIL: No 'to_address' and no email for " . ($member->{surname} ||'') . ", borrowernumber ($message->{borrowernumber})"; |
1309 |
# warning too verbose for this more common case? |
1330 |
# warning too verbose for this more common case? |
1310 |
_set_message_status( { message_id => $message->{'message_id'}, |
1331 |
_set_message_status( { message_id => $message->{'message_id'}, |
Lines 1349-1356
sub _send_message_by_email {
Link Here
|
1349 |
_update_message_to_address($message->{'message_id'},$to_address) unless $message->{to_address}; #if initial message address was empty, coming here means that a to address was found and queue should be updated |
1370 |
_update_message_to_address($message->{'message_id'},$to_address) unless $message->{to_address}; #if initial message address was empty, coming here means that a to address was found and queue should be updated |
1350 |
|
1371 |
|
1351 |
if ( sendmail( %sendmail_params ) ) { |
1372 |
if ( sendmail( %sendmail_params ) ) { |
1352 |
_set_message_status( { message_id => $message->{'message_id'}, |
1373 |
_set_message_status( { message_id => $message->{'message_id'}, |
1353 |
status => 'sent' } ); |
1374 |
status => 'sent' } ); |
1354 |
return 1; |
1375 |
return 1; |
1355 |
} else { |
1376 |
} else { |
1356 |
_set_message_status( { message_id => $message->{'message_id'}, |
1377 |
_set_message_status( { message_id => $message->{'message_id'}, |