Skip to content

Commit ed0ada6

Browse files
committed
feature #304 Add support for headers in native mailer (anthonybocci, lyrixx)
This PR was merged into the 3.x-dev branch. Discussion ---------- Add support for headers in native mailer The native mailer is able to have additional headers, but it wasn't possible to give it any headers in the configuration. Swift mailer may have a content_type key but not native mailer. A new "headers" key is now allowed in the handler configuration, so a list of headers may be given to the handler. Only native mailer supports it. Related to #272 Commits ------- 19eaa0f Fix 'Add support for headers in native mailer' 7ecbc9e Add support for headers in native mailer
2 parents 5fe15c2 + 19eaa0f commit ed0ada6

File tree

6 files changed

+52
-0
lines changed

6 files changed

+52
-0
lines changed

DependencyInjection/Configuration.php

+6
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@
175175
* - subject: string
176176
* - [level]: level name or int value, defaults to DEBUG
177177
* - [bubble]: bool, defaults to true
178+
* - [headers]: optional array containing additional headers: ['Foo: Bar', '...']
178179
*
179180
* - socket:
180181
* - connection_string: string
@@ -347,6 +348,7 @@ public function getConfigTreeBuilder()
347348
->fixXmlConfig('excluded_http_code')
348349
->fixXmlConfig('tag')
349350
->fixXmlConfig('accepted_level')
351+
->fixXmlConfig('header')
350352
->canBeUnset()
351353
->children()
352354
->scalarNode('type')
@@ -594,6 +596,10 @@ public function getConfigTreeBuilder()
594596
->end()
595597
->scalarNode('subject')->end() // swift_mailer and native_mailer
596598
->scalarNode('content_type')->defaultNull()->end() // swift_mailer
599+
->arrayNode('headers') // native_mailer
600+
->canBeUnset()
601+
->scalarPrototype()->end()
602+
->end()
597603
->scalarNode('mailer')->defaultValue('mailer')->end() // swift_mailer
598604
->arrayNode('email_prototype') // swift_mailer
599605
->canBeUnset()

DependencyInjection/MonologExtension.php

+3
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,9 @@ private function buildHandler(ContainerBuilder $container, $name, array $handler
540540
$handler['level'],
541541
$handler['bubble'],
542542
));
543+
if (!empty($handler['headers'])) {
544+
$definition->addMethodCall('addHeader', [$handler['headers']]);
545+
}
543546
break;
544547

545548
case 'socket':

Resources/config/schema/monolog-1.0.xsd

+7
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
<xsd:element name="tag" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
2929
<xsd:element name="accepted-level" type="level" minOccurs="0" maxOccurs="unbounded" />
3030
<xsd:element name="to-email" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
31+
<xsd:element name="header" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
3132
</xsd:sequence>
3233
<xsd:attribute name="type" type="xsd:string" />
3334
<xsd:attribute name="priority" type="xsd:integer" />
@@ -186,4 +187,10 @@
186187
</xsd:choice>
187188
<xsd:attribute name="code" type="xsd:integer" />
188189
</xsd:complexType>
190+
191+
<xsd:complexType name="headers">
192+
<xsd:sequence>
193+
<xsd:any minOccurs="0" processContents="lax"/>
194+
</xsd:sequence>
195+
</xsd:complexType>
189196
</xsd:schema>

Tests/DependencyInjection/FixtureMonologExtensionTest.php

+11
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,17 @@ public function testPsr3MessageProcessingDisabled()
216216
$this->assertNotContains(array('pushProcessor', array(new Reference('monolog.processor.psr_log_message'))), $methodCalls, 'The PSR-3 processor should not be enabled', false, false);
217217
}
218218

219+
public function testNativeMailer()
220+
{
221+
$container = $this->getContainer('native_mailer');
222+
223+
$logger = $container->getDefinition('monolog.handler.mailer');
224+
$methodCalls = $logger->getMethodCalls();
225+
226+
$this->assertCount(2, $methodCalls);
227+
$this->assertSame(['addHeader', [['Foo: bar', 'Baz: inga']]], $methodCalls[1]);
228+
}
229+
219230
protected function getContainer($fixture)
220231
{
221232
$container = new ContainerBuilder();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" ?>
2+
3+
<srv:container xmlns="http://symfony.com/schema/dic/monolog"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xmlns:srv="http://symfony.com/schema/dic/services"
6+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
7+
http://symfony.com/schema/dic/monolog http://symfony.com/schema/dic/monolog/monolog-1.0.xsd">
8+
9+
<config>
10+
<handler name="mailer" type="native_mailer" to-email="[email protected]" from-email="[email protected]" subject="a subject">
11+
<header>Foo: bar</header>
12+
<header>Baz: inga</header>
13+
</handler>
14+
</config>
15+
</srv:container>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
monolog:
2+
handlers:
3+
mailer:
4+
type: native_mailer
5+
from_email: [email protected]
6+
7+
subject: a subject
8+
headers:
9+
- "Foo: bar"
10+
- "Baz: inga"

0 commit comments

Comments
 (0)