Skip to content

Commit 78a8e13

Browse files
committed
MailExtension: added support for Signer
1 parent b4e2ab4 commit 78a8e13

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

src/Bridges/MailDI/MailExtension.php

+22
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@ public function getConfigSchema(): Nette\Schema\Schema
3131
'context' => Expect::arrayOf('array')->dynamic(),
3232
'clientHost' => Expect::string()->dynamic(),
3333
'persistent' => Expect::bool(false)->dynamic(),
34+
'dkim' => Expect::anyOf(
35+
Expect::null(),
36+
Expect::structure([
37+
'domain' => Expect::string()->dynamic(),
38+
'selector' => Expect::string()->dynamic(),
39+
'privateKey' => Expect::string()->dynamic()->required(),
40+
'passPhrase' => Expect::string()->dynamic(),
41+
'testMode' => Expect::bool(false)->dynamic(),
42+
])->castTo('array')
43+
),
3444
])->castTo('array');
3545
}
3646

@@ -42,6 +52,18 @@ public function loadConfiguration()
4252
$mailer = $builder->addDefinition($this->prefix('mailer'))
4353
->setType(Nette\Mail\Mailer::class);
4454

55+
if ($this->config['dkim']) {
56+
$dkim = $this->config['dkim'];
57+
$dkim['privateKey'] = file_get_contents($dkim['privateKey']);
58+
unset($this->config['dkim']);
59+
60+
$signer = $builder->addDefinition($this->prefix('signer'))
61+
->setType(Nette\Mail\Signer::class)
62+
->setFactory(Nette\Mail\DkimSigner::class, [$dkim]);
63+
64+
$mailer->addSetup('setSigner', [$signer]);
65+
}
66+
4567
if ($this->config['smtp']) {
4668
$mailer->setFactory(Nette\Mail\SmtpMailer::class, [$this->config]);
4769
} else {

tests/Mail.DI/Mail.extension.phpt

+14
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ test:
2323
smtp: false
2424
');
2525
Assert::type(Nette\Mail\SendmailMailer::class, $container1->getService('test.mailer'));
26+
Assert::false($container1->hasService('test.signer'));
2627
Assert::false($container1->hasService('nette.mailer'));
2728

2829

@@ -34,3 +35,16 @@ mail:
3435
');
3536
Assert::type(Nette\Mail\SmtpMailer::class, $container2->getService('mail.mailer'));
3637
Assert::type($container2->getService('mail.mailer'), $container2->getService('nette.mailer'));
38+
Assert::false($container2->hasService('mail.signer'));
39+
40+
41+
$compiler = new DI\Compiler;
42+
$compiler->addExtension('mail', new MailExtension);
43+
$container3 = createContainer($compiler, '
44+
mail:
45+
smtp: true
46+
dkim:
47+
privateKey: fixtures/private.key
48+
49+
');
50+
Assert::type(Nette\Mail\DkimSigner::class, $container3->getService('mail.signer'));

tests/Mail.DI/fixtures/private.key

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIICXQIBAAKBgQCxDQWcHZB2hO5GNSaj7CUVbCw+wkRBZ9xtNCHqrWwqaUozqWkw
3+
50XEe5gtnvjPix3zmOKJQVY15bYIrgRsnHsbMA2TUSZZyYgCpeypSq7Mvp79H1ZF
4+
dHlVRUbjzgLzOAko7Yg3F7vwMS2SWAwZxRttCkDmQyMO0tn2kRE5ZJhFTQIDAQAB
5+
AoGBAJ3mTyp782rAAwD6RgvLfwcsAgm2l8j9J8j8xYLWR7FLVbHdVMMYf1BMKdwF
6+
+0CdgYjOwLpIWuqWg1IaYDe9FswcvAVLvFmbkmbt40oWD0v67SVxITXjjKmaA6yL
7+
TF0QqVp7Wo2Rppi4K0A5JaK9FnsbWygGwdtNmz518Pc5JngBAkEA1xEqnzjAXFB5
8+
4egCaKj3uGpVfGelUFvIlFrxoLSrvZ4NSp0XdrR/lzBB/TsMi/WkZpPeeQUTy+bq
9+
GcIdXYc9IQJBANK/kjfXtg3tK0dNW/9GXcZA2Nb40475rnCruXy8nhv+S8KkccdY
10+
IDnSvSs1ALy3X3Ew+aAGtIeWJAHttihvNq0CQQCTrQTwSd7ERLo8Zbxps0ROTC2g
11+
++Zm1G9Zd00dRZH75PBJgK7g4rYN0aQuRwKphCW8DeMghF0AkPHEeCcD1t4hAkBM
12+
75y8gCY5HU0AYbBlF9YiCwheKkZpWqMhBL/ZVq5Nv97+drQGtxhEo7dlb5sOSc8w
13+
7lUi42/CU8BfZ91pE3idAkB4CvSZyTfH5MTM+ta7oQGq/HGMCB+nIOdy6OZ28nGA
14+
FAXmcXdM0CjhOg4Xnf07+X5iKyXZQ17ErPJgh/L1Ih/O
15+
-----END RSA PRIVATE KEY-----

0 commit comments

Comments
 (0)