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,
`EmailSubject` TEXT,
`EmailBody` TEXT,
`EmailServer` TEXT,
`EmailFormat` enum('Individual','Summary') NOT NULL default 'Individual',
`AutoMessage` 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}}
Name: zoneminder
Version: 1.37.62
Version: 1.37.63
Release: 2%{?dist}
Summary: A camera monitoring and analysis tool
Group: System Environment/Daemons

View File

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

View File

@ -1036,14 +1036,14 @@ sub sendTheEmail {
}
if (!$ssmtp_location) {
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();
} else {
### Send using SSMTP
$mail->send('sendmail', $ssmtp_location, $$filter{EmailTo});
}
} 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();
}
} else {
@ -1105,7 +1105,9 @@ sub sendTheEmail {
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');
}
$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 ( $@ ) {

View File

@ -1 +1 @@
1.37.62
1.37.63

View File

@ -353,6 +353,10 @@ if ( ZM_OPT_EMAIL ) {
$filter->EmailFormat()); ?>
</label>
</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>
<?php