dbxapp 4.1.3
CMS, Shop, Workflows und modulare Geschäftsanwendungen
Loading...
Searching...
No Matches
dbxMail_delivery_mode_test.php
Go to the documentation of this file.
1<?php
2
3declare(strict_types=1);
4
6{
7 public string $mode = 'internal';
8 public array $messages = array();
9
10 public function get_config(string $module, string $key, $default = 'undef')
11 {
12 if ($module === 'dbx' && $key === 'mail_delivery_mode') {
13 return $this->mode;
14 }
15
16 return $default;
17 }
18
19 public function sys_msg(
20 string $level,
21 string $type,
22 string $source,
23 string $message,
24 array $details = array()
25 ): void {
26 $this->messages[] = compact(
27 'level',
28 'type',
29 'source',
30 'message',
31 'details'
32 );
33 }
34}
35
37
43
44require_once dirname(__DIR__) . '/dbxMail.class.php';
45
46function dbx_mail_delivery_assert(bool $condition, string $message): void
47{
48 if (!$condition) {
49 throw new RuntimeException($message);
50 }
51}
52
53$mail = new dbxMail();
54$mail->init();
55$mail->set_from('system@example.test', 'dbxapp');
56$mail->bodytext('Dieser Inhalt darf nicht protokolliert werden.');
57
58$dbxMailDeliveryTestKernel->mode = 'internal';
60 array('email' => 'recipient@example.test', 'name' => 'Empfänger'),
61 'Interne Nachricht'
62);
63dbx_mail_delivery_assert($accepted === 1, 'Interne Zustellung muss angenommen werden.');
65 ($dbxMailDeliveryTestKernel->messages[0]['type'] ?? '') === 'mail-internal',
66 'Interne Zustellung muss als mail-internal protokolliert werden.'
67);
68$loggedInternal = json_encode(
69 $dbxMailDeliveryTestKernel->messages[0] ?? array(),
70 JSON_UNESCAPED_UNICODE
71);
73 !str_contains((string)$loggedInternal, 'Dieser Inhalt'),
74 'Interne Zustellung darf keinen Mailinhalt protokollieren.'
75);
76
77$dbxMailDeliveryTestKernel->mode = 'disabled';
78$blocked = $mail->send('recipient@example.test', 'Gesperrte Nachricht');
79dbx_mail_delivery_assert($blocked === 0, 'Globale E-Mail-Sperre muss den Versand ablehnen.');
81 $mail->get_error() === 'E-Mail-Versand ist global deaktiviert.',
82 'Die globale E-Mail-Sperre benötigt eine eindeutige Fehlermeldung.'
83);
85 ($dbxMailDeliveryTestKernel->messages[1]['type'] ?? '') === 'mail-disabled',
86 'Gesperrte Zustellung muss als mail-disabled protokolliert werden.'
87);
88
89$dbxMailDeliveryTestKernel->mode = 'unbekannt';
91 $mail->delivery_mode() === 'internal',
92 'Unbekannte Versandarten müssen auf den sicheren internen Modus zurückfallen.'
93);
94
95echo "OK global mail delivery modes\n";
get_config(string $module, string $key, $default='undef')
sys_msg(string $level, string $type, string $source, string $message, array $details=array())
dbx_mail_delivery_assert(bool $condition, string $message)