Add EmailServer to filter to override server set in options

pull/4090/head
Isaac Connor 2024-07-10 17:14:36 -04:00
parent 6c6fa74f21
commit a24fbe4574
7 changed files with 24 additions and 5 deletions

View File

@ -309,6 +309,7 @@ CREATE TABLE `Filters` (
`EmailTo` TEXT, `EmailTo` TEXT,
`EmailSubject` TEXT, `EmailSubject` TEXT,
`EmailBody` TEXT, `EmailBody` TEXT,
`EmailServer` TEXT,
`EmailFormat` enum('Individual','Summary') NOT NULL default 'Individual', `EmailFormat` enum('Individual','Summary') NOT NULL default 'Individual',
`AutoMessage` tinyint(3) unsigned NOT NULL default '0', `AutoMessage` tinyint(3) unsigned NOT NULL default '0',
`AutoExecute` tinyint(3) unsigned NOT NULL default '0', `AutoExecute` tinyint(3) unsigned NOT NULL default '0',

11
db/zm_update-1.37.63.sql Normal file
View File

@ -0,0 +1,11 @@
SET @s = (SELECT IF(
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = DATABASE()
AND table_name = 'Filters'
AND column_name = 'EmailServer'
) > 0,
"SELECT 'Column EmailServer already exists in Filters'",
"ALTER TABLE `Filters` ADD `EmailServer` TEXT AFTER `EmailBody`"
));
PREPARE stmt FROM @s;
EXECUTE stmt;

View File

@ -18,7 +18,7 @@
%global zmtargetdistro %{?rhel:el%{rhel}}%{!?rhel:fc%{fedora}} %global zmtargetdistro %{?rhel:el%{rhel}}%{!?rhel:fc%{fedora}}
Name: zoneminder Name: zoneminder
Version: 1.37.62 Version: 1.37.63
Release: 2%{?dist} Release: 2%{?dist}
Summary: A camera monitoring and analysis tool Summary: A camera monitoring and analysis tool
Group: System Environment/Daemons Group: System Environment/Daemons

View File

@ -55,6 +55,7 @@ AutoEmail
EmailTo EmailTo
EmailSubject EmailSubject
EmailBody EmailBody
EmailServer
EmailFormat EmailFormat
AutoMessage AutoMessage
AutoExecute AutoExecute

View File

@ -1036,14 +1036,14 @@ sub sendTheEmail {
} }
if (!$ssmtp_location) { if (!$ssmtp_location) {
Warning('Unable to find ssmtp, trying MIME::Lite->send'); Warning('Unable to find ssmtp, trying MIME::Lite->send');
MIME::Lite->send('smtp', $Config{ZM_EMAIL_HOST}, Timeout=>60); MIME::Lite->send('smtp', ($$filter{EmailServer} ? $$filter{EmailServer} : $Config{ZM_EMAIL_HOST}), Timeout=>60);
$mail->send(); $mail->send();
} else { } else {
### Send using SSMTP ### Send using SSMTP
$mail->send('sendmail', $ssmtp_location, $$filter{EmailTo}); $mail->send('sendmail', $ssmtp_location, $$filter{EmailTo});
} }
} else { } else {
MIME::Lite->send('smtp', $Config{ZM_EMAIL_HOST}, Timeout=>60); MIME::Lite->send('smtp', ($$filter{EmailServer} ? $$filter{EmailServer} : $Config{ZM_EMAIL_HOST}), Timeout=>60);
$mail->send(); $mail->send();
} }
} else { } else {
@ -1105,7 +1105,9 @@ sub sendTheEmail {
if ( $total_size > 10*1024*1024 ) { if ( $total_size > 10*1024*1024 ) {
Warning('Emails larger than 10Mb will often not be delivered! This one is '.int($total_size/(1024*1024)).'Mb'); Warning('Emails larger than 10Mb will often not be delivered! This one is '.int($total_size/(1024*1024)).'Mb');
} }
$mail->smtpsend(Host => $Config{ZM_EMAIL_HOST}, MailFrom => $Config{ZM_FROM_EMAIL}); $mail->smtpsend(
Host => ($$filter{EmailServer} ? $$filter{EmailServer} :$Config{ZM_EMAIL_HOST}),
MailFrom => $Config{ZM_FROM_EMAIL});
} }
}; };
if ( $@ ) { if ( $@ ) {

View File

@ -1 +1 @@
1.37.62 1.37.63

View File

@ -353,6 +353,10 @@ if ( ZM_OPT_EMAIL ) {
$filter->EmailFormat()); ?> $filter->EmailFormat()); ?>
</label> </label>
</p> </p>
<p>
<label for="filter[EmailServer]"><?php echo translate('FilterEmailServer') ?></label>
<input type="email" id="filter[EmailServer]" name="filter[EmailServer]" value="<?php echo validHtmlStr($filter->EmailServer()) ?>" />
</p>
</div> </div>
<?php <?php