Lisää SMTP-lähetystuki postilaatikoihin
Aiemmin sähköpostit lähetettiin PHP mail()-funktiolla, mikä ei toimi kunnolla useimmilla palvelimilla (SPF/DKIM-ongelmat). Nyt mailboxiin voi konfiguroida SMTP-asetukset (host, port, user, pass, encryption), ja lähetys tapahtuu suoraan SMTP-palvelimen kautta socket-yhteydellä. Fallback PHP mail():iin jos SMTP-asetuksia ei ole asetettu. - db.php: smtp_host/port/user/password/encryption sarakkeet - api.php: sendViaSMTP() socket-pohjainen SMTP-client - index.html: SMTP-kentät mailbox-lomakkeeseen - script.js: SMTP-kenttien luku/kirjoitus lomakkeessa Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
24
db.php
24
db.php
@@ -309,6 +309,11 @@ function initDatabase(): void {
|
||||
imap_user VARCHAR(255),
|
||||
imap_encryption VARCHAR(10) DEFAULT 'ssl',
|
||||
imap_password VARCHAR(255),
|
||||
smtp_host VARCHAR(255) DEFAULT '',
|
||||
smtp_port INT DEFAULT 587,
|
||||
smtp_user VARCHAR(255) DEFAULT '',
|
||||
smtp_password VARCHAR(255) DEFAULT '',
|
||||
smtp_encryption VARCHAR(10) DEFAULT 'tls',
|
||||
smtp_from_email VARCHAR(255),
|
||||
smtp_from_name VARCHAR(255),
|
||||
aktiivinen BOOLEAN DEFAULT TRUE,
|
||||
@@ -431,6 +436,11 @@ function initDatabase(): void {
|
||||
"ALTER TABLE customer_connections ADD COLUMN laite VARCHAR(100) DEFAULT '' AFTER vlan",
|
||||
"ALTER TABLE customer_connections ADD COLUMN portti VARCHAR(100) DEFAULT '' AFTER laite",
|
||||
"ALTER TABLE customer_connections ADD COLUMN ip VARCHAR(100) DEFAULT '' AFTER portti",
|
||||
"ALTER TABLE mailboxes ADD COLUMN smtp_host VARCHAR(255) DEFAULT '' AFTER smtp_from_name",
|
||||
"ALTER TABLE mailboxes ADD COLUMN smtp_port INT DEFAULT 587 AFTER smtp_host",
|
||||
"ALTER TABLE mailboxes ADD COLUMN smtp_user VARCHAR(255) DEFAULT '' AFTER smtp_port",
|
||||
"ALTER TABLE mailboxes ADD COLUMN smtp_password VARCHAR(255) DEFAULT '' AFTER smtp_user",
|
||||
"ALTER TABLE mailboxes ADD COLUMN smtp_encryption VARCHAR(10) DEFAULT 'tls' AFTER smtp_password",
|
||||
];
|
||||
foreach ($alters as $sql) {
|
||||
try { $db->query($sql); } catch (\Throwable $e) { /* sarake on jo olemassa / jo ajettu */ }
|
||||
@@ -1148,6 +1158,7 @@ function dbLoadMailboxes(string $companyId): array {
|
||||
foreach ($boxes as &$b) {
|
||||
$b['aktiivinen'] = (bool)$b['aktiivinen'];
|
||||
$b['imap_port'] = (int)$b['imap_port'];
|
||||
$b['smtp_port'] = (int)($b['smtp_port'] ?? 587);
|
||||
unset($b['company_id']);
|
||||
}
|
||||
return $boxes;
|
||||
@@ -1155,13 +1166,15 @@ function dbLoadMailboxes(string $companyId): array {
|
||||
|
||||
function dbSaveMailbox(string $companyId, array $mailbox): void {
|
||||
_dbExecute("
|
||||
INSERT INTO mailboxes (id, company_id, nimi, imap_host, imap_port, imap_user, imap_encryption, imap_password, smtp_from_email, smtp_from_name, aktiivinen)
|
||||
VALUES (:id, :company_id, :nimi, :imap_host, :imap_port, :imap_user, :imap_encryption, :imap_password, :smtp_from_email, :smtp_from_name, :aktiivinen)
|
||||
INSERT INTO mailboxes (id, company_id, nimi, imap_host, imap_port, imap_user, imap_encryption, imap_password, smtp_from_email, smtp_from_name, smtp_host, smtp_port, smtp_user, smtp_password, smtp_encryption, aktiivinen)
|
||||
VALUES (:id, :company_id, :nimi, :imap_host, :imap_port, :imap_user, :imap_encryption, :imap_password, :smtp_from_email, :smtp_from_name, :smtp_host, :smtp_port, :smtp_user, :smtp_password, :smtp_encryption, :aktiivinen)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
nimi = VALUES(nimi), imap_host = VALUES(imap_host), imap_port = VALUES(imap_port),
|
||||
imap_user = VALUES(imap_user), imap_encryption = VALUES(imap_encryption),
|
||||
imap_password = VALUES(imap_password), smtp_from_email = VALUES(smtp_from_email),
|
||||
smtp_from_name = VALUES(smtp_from_name), aktiivinen = VALUES(aktiivinen)
|
||||
smtp_from_name = VALUES(smtp_from_name), smtp_host = VALUES(smtp_host), smtp_port = VALUES(smtp_port),
|
||||
smtp_user = VALUES(smtp_user), smtp_password = VALUES(smtp_password),
|
||||
smtp_encryption = VALUES(smtp_encryption), aktiivinen = VALUES(aktiivinen)
|
||||
", [
|
||||
'id' => $mailbox['id'],
|
||||
'company_id' => $companyId,
|
||||
@@ -1173,6 +1186,11 @@ function dbSaveMailbox(string $companyId, array $mailbox): void {
|
||||
'imap_password' => $mailbox['imap_password'] ?? '',
|
||||
'smtp_from_email' => $mailbox['smtp_from_email'] ?? '',
|
||||
'smtp_from_name' => $mailbox['smtp_from_name'] ?? '',
|
||||
'smtp_host' => $mailbox['smtp_host'] ?? '',
|
||||
'smtp_port' => $mailbox['smtp_port'] ?? 587,
|
||||
'smtp_user' => $mailbox['smtp_user'] ?? '',
|
||||
'smtp_password' => $mailbox['smtp_password'] ?? '',
|
||||
'smtp_encryption' => $mailbox['smtp_encryption'] ?? 'tls',
|
||||
'aktiivinen' => $mailbox['aktiivinen'] ?? true,
|
||||
]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user