Skip to content
This repository was archived by the owner on Feb 6, 2022. It is now read-only.

Commit 56483a6

Browse files
committed
merged branch csanquer/master (PR #42)
This PR was squashed before being merged into the master branch (closes #42). Discussion ---------- fix OutOfBoundsException when using mail or sendmail transport Hi, Since the #34 had been merged, an exception occured when using mail or sendmail transport : ``` [Symfony\Component\DependencyInjection\Exception\OutOfBoundsException] The index "1" is not in the range [0, 0]. ``` This patch fix it. Commits ------- 01fb626 fix OutOfBoundsException when using mail or sendmail transport
2 parents 69d6c36 + 01fb626 commit 56483a6

File tree

8 files changed

+73
-2
lines changed

8 files changed

+73
-2
lines changed

DependencyInjection/SwiftmailerExtension.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,11 +134,24 @@ protected function configureMailerTransport($name, array $mailer, ContainerBuild
134134
->addMethodCall('setSourceIp', array('%swiftmailer.mailer.' . $name . '.transport.smtp.source_ip%'))
135135
;
136136
$container->setAlias(sprintf('swiftmailer.mailer.%s.transport', $name), sprintf('swiftmailer.mailer.%s.transport.%s', $name, $transport));
137-
} elseif (in_array($transport, array('mail', 'sendmail'))) {
137+
} elseif ('sendmail' === $transport) {
138138
$definitionDecorator = new DefinitionDecorator(sprintf('swiftmailer.transport.%s.abstract', $transport));
139139
$container
140140
->setDefinition(sprintf('swiftmailer.mailer.%s.transport.%s', $name, $transport), $definitionDecorator)
141-
->replaceArgument(1, new Reference(sprintf('swiftmailer.mailer.%s.transport.eventdispatcher', $name)))
141+
->setArguments(array(
142+
new Reference('swiftmailer.transport.buffer'),
143+
new Reference(sprintf('swiftmailer.mailer.%s.transport.eventdispatcher', $name)),
144+
))
145+
;
146+
$container->setAlias(sprintf('swiftmailer.mailer.%s.transport', $name), sprintf('swiftmailer.mailer.%s.transport.%s', $name, $transport));
147+
} elseif ('mail' === $transport) {
148+
$definitionDecorator = new DefinitionDecorator(sprintf('swiftmailer.transport.%s.abstract', $transport));
149+
$container
150+
->setDefinition(sprintf('swiftmailer.mailer.%s.transport.%s', $name, $transport), $definitionDecorator)
151+
->setArguments(array(
152+
new Reference('swiftmailer.transport.mailinvoker'),
153+
new Reference(sprintf('swiftmailer.mailer.%s.transport.eventdispatcher', $name)),
154+
))
142155
;
143156
$container->setAlias(sprintf('swiftmailer.mailer.%s.transport', $name), sprintf('swiftmailer.mailer.%s.transport.%s', $name, $transport));
144157
} elseif ('null' === $transport) {
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?php
2+
$container->loadFromExtension('swiftmailer', array(
3+
'transport' => "mail",
4+
));
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?php
2+
$container->loadFromExtension('swiftmailer', array(
3+
'transport' => "sendmail",
4+
));
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<container xmlns="http://symfony.com/schema/dic/services"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns:swiftmailer="http://symfony.com/schema/dic/swiftmailer"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
6+
http://symfony.com/schema/dic/swiftmailer http://symfony.com/schema/dic/swiftmailer/swiftmailer-1.0.xsd">
7+
8+
9+
<swiftmailer:config
10+
transport="mail"
11+
/>
12+
</container>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<container xmlns="http://symfony.com/schema/dic/services"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns:swiftmailer="http://symfony.com/schema/dic/swiftmailer"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
6+
http://symfony.com/schema/dic/swiftmailer http://symfony.com/schema/dic/swiftmailer/swiftmailer-1.0.xsd">
7+
8+
9+
<swiftmailer:config
10+
transport="sendmail"
11+
/>
12+
</container>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
swiftmailer:
2+
transport: mail
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
swiftmailer:
2+
transport: sendmail

Tests/DependencyInjection/SwiftmailerExtensionTest.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,28 @@ public function testDefaultConfig($type)
4141
$this->assertEquals('swiftmailer.mailer.default.transport.smtp', (string) $container->getAlias('swiftmailer.mailer.default.transport'));
4242
}
4343

44+
/**
45+
* @dataProvider getConfigTypes
46+
*/
47+
public function testSendmailConfig($type)
48+
{
49+
$container = $this->loadContainerFromFile('sendmail', $type);
50+
51+
$this->assertEquals('swiftmailer.mailer.default.transport', (string) $container->getAlias('swiftmailer.transport'));
52+
$this->assertEquals('swiftmailer.mailer.default.transport.sendmail', (string) $container->getAlias('swiftmailer.mailer.default.transport'));
53+
}
54+
55+
/**
56+
* @dataProvider getConfigTypes
57+
*/
58+
public function testMailConfig($type)
59+
{
60+
$container = $this->loadContainerFromFile('mail', $type);
61+
62+
$this->assertEquals('swiftmailer.mailer.default.transport', (string) $container->getAlias('swiftmailer.transport'));
63+
$this->assertEquals('swiftmailer.mailer.default.transport.mail', (string) $container->getAlias('swiftmailer.mailer.default.transport'));
64+
}
65+
4466
/**
4567
* @dataProvider getConfigTypes
4668
*/

0 commit comments

Comments
 (0)