Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite885860

Browse files
committed
Fix From/Sender handling in Emails
1 parent14a2046 commite885860

File tree

7 files changed

+38
-24
lines changed

7 files changed

+38
-24
lines changed

‎src/Symfony/Component/Mailer/EventListener/EnvelopeListener.php‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
useSymfony\Component\EventDispatcher\EventSubscriberInterface;
1515
useSymfony\Component\Mailer\Event\MessageEvent;
1616
useSymfony\Component\Mime\Address;
17+
useSymfony\Component\Mime\Message;
1718

1819
/**
1920
* Manipulates the Envelope of a Message.
@@ -43,6 +44,13 @@ public function onMessage(MessageEvent $event): void
4344
{
4445
if ($this->sender) {
4546
$event->getEnvelope()->setSender($this->sender);
47+
48+
$message =$event->getMessage();
49+
if ($messageinstanceof Message) {
50+
if (!$message->getHeaders()->has('Sender') && !$message->getHeaders()->has('From')) {
51+
$message->getHeaders()->addMailboxHeader('Sender',$this->sender->getAddress());
52+
}
53+
}
4654
}
4755

4856
if ($this->recipients) {

‎src/Symfony/Component/Mailer/Transport/AbstractTransport.php‎

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,6 @@ public function send(RawMessage $message, Envelope $envelope = null): ?SentMessa
6363
$envelope =$event->getEnvelope();
6464
}
6565

66-
if (!$envelope->getRecipients()) {
67-
returnnull;
68-
}
69-
7066
$message =newSentMessage($message,$envelope);
7167
$this->doSend($message);
7268

‎src/Symfony/Component/Mime/Message.php‎

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,10 @@ public function getPreparedHeaders(): Headers
7474
$headers =clone$this->headers;
7575

7676
if (!$headers->has('From')) {
77-
thrownewLogicException('An email must have a "From" header.');
77+
if (!$headers->has('Sender')) {
78+
thrownewLogicException('An email must have a "From" or a "Sender" header.');
79+
}
80+
$headers->addMailboxListHeader('From', [$headers->get('Sender')->getAddress()]);
7881
}
7982

8083
$headers->addTextHeader('MIME-Version','1.0');
@@ -119,8 +122,12 @@ public function toIterable(): iterable
119122

120123
publicfunctionensureValidity()
121124
{
122-
if (!$this->headers->has('From')) {
123-
thrownewLogicException('An email must have a "From" header.');
125+
if (!$this->headers->has('To')) {
126+
thrownewLogicException('An email must have a "To" header.');
127+
}
128+
129+
if (!$this->headers->has('From') && !$this->headers->has('Sender')) {
130+
thrownewLogicException('An email must have a "From" or a "Sender" header.');
124131
}
125132

126133
parent::ensureValidity();
@@ -133,7 +140,7 @@ public function generateMessageId(): string
133140
}elseif ($this->headers->has('From')) {
134141
$sender =$this->headers->get('From')->getAddresses()[0];
135142
}else {
136-
thrownewLogicException('An email must have a "From" or a "Sender" header to compute a Messsage ID.');
143+
thrownewLogicException('An email must have a "From" or a "Sender" header.');
137144
}
138145

139146
returnbin2hex(random_bytes(16)).strstr($sender->getAddress(),'@');

‎src/Symfony/Component/Mime/Tests/Crypto/SMimeSignerTest.php‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ public function testSignedMessageWithBcc()
9999
{
100100
$message = (newEmail())
101101
->date(new \DateTime('2019-04-07 10:36:30',new \DateTimeZone('Europe/Paris')))
102+
->to('fabien@symfony.com')
102103
->addBcc('fabien@symfony.com','s.stok@rollerscapes.net')
103104
->subject('I am your sign of fear')
104105
->from('noreply@example.com')
@@ -115,8 +116,9 @@ public function testSignedMessageWithAttachments()
115116
$message =newEmail((newHeaders())
116117
->addDateHeader('Date',new \DateTime('2019-04-07 10:36:30',new \DateTimeZone('Europe/Paris')))
117118
->addMailboxListHeader('From', ['fabien@symfony.com'])
119+
->addMailboxListHeader('To', ['fabien@symfony.com'])
118120
);
119-
$message->html($content ='html content <img src="cid:test.gif">');
121+
$message->html('html content <img src="cid:test.gif">');
120122
$message->text('text content');
121123
$message->attach(fopen(__DIR__.'/../Fixtures/mimetypes/test','r'));
122124
$message->attach(fopen(__DIR__.'/../Fixtures/mimetypes/test.gif','r'),'test.gif');

‎src/Symfony/Component/Mime/Tests/EmailTest.php‎

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -251,70 +251,70 @@ public function testGenerateBody()
251251
$att =newDataPart($file =fopen(__DIR__.'/Fixtures/mimetypes/test','r'));
252252
$img =newDataPart($image =fopen(__DIR__.'/Fixtures/mimetypes/test.gif','r'),'test.gif');
253253

254-
$e = (newEmail())->from('me@example.com');
254+
$e = (newEmail())->from('me@example.com')->to('you@example.com');
255255
$e->text('text content');
256256
$this->assertEquals($text,$e->getBody());
257257
$this->assertEquals('text content',$e->getTextBody());
258258

259-
$e = (newEmail())->from('me@example.com');
259+
$e = (newEmail())->from('me@example.com')->to('you@example.com');
260260
$e->html('html content');
261261
$this->assertEquals($html,$e->getBody());
262262
$this->assertEquals('html content',$e->getHtmlBody());
263263

264-
$e = (newEmail())->from('me@example.com');
264+
$e = (newEmail())->from('me@example.com')->to('you@example.com');
265265
$e->html('html content');
266266
$e->text('text content');
267267
$this->assertEquals(newAlternativePart($text,$html),$e->getBody());
268268

269-
$e = (newEmail())->from('me@example.com');
269+
$e = (newEmail())->from('me@example.com')->to('you@example.com');
270270
$e->html('html content','iso-8859-1');
271271
$e->text('text content','iso-8859-1');
272272
$this->assertEquals('iso-8859-1',$e->getTextCharset());
273273
$this->assertEquals('iso-8859-1',$e->getHtmlCharset());
274274
$this->assertEquals(newAlternativePart(newTextPart('text content','iso-8859-1'),newTextPart('html content','iso-8859-1','html')),$e->getBody());
275275

276-
$e = (newEmail())->from('me@example.com');
276+
$e = (newEmail())->from('me@example.com')->to('you@example.com');
277277
$e->attach($file);
278278
$e->text('text content');
279279
$this->assertEquals(newMixedPart($text,$att),$e->getBody());
280280

281-
$e = (newEmail())->from('me@example.com');
281+
$e = (newEmail())->from('me@example.com')->to('you@example.com');
282282
$e->attach($file);
283283
$e->html('html content');
284284
$this->assertEquals(newMixedPart($html,$att),$e->getBody());
285285

286-
$e = (newEmail())->from('me@example.com');
286+
$e = (newEmail())->from('me@example.com')->to('you@example.com');
287287
$e->attach($file);
288288
$this->assertEquals(newMixedPart($att),$e->getBody());
289289

290-
$e = (newEmail())->from('me@example.com');
290+
$e = (newEmail())->from('me@example.com')->to('you@example.com');
291291
$e->html('html content');
292292
$e->text('text content');
293293
$e->attach($file);
294294
$this->assertEquals(newMixedPart(newAlternativePart($text,$html),$att),$e->getBody());
295295

296-
$e = (newEmail())->from('me@example.com');
296+
$e = (newEmail())->from('me@example.com')->to('you@example.com');
297297
$e->html('html content');
298298
$e->text('text content');
299299
$e->attach($file);
300300
$e->attach($image,'test.gif');
301301
$this->assertEquals(newMixedPart(newAlternativePart($text,$html),$att,$img),$e->getBody());
302302

303-
$e = (newEmail())->from('me@example.com');
303+
$e = (newEmail())->from('me@example.com')->to('you@example.com');
304304
$e->text('text content');
305305
$e->attach($file);
306306
$e->attach($image,'test.gif');
307307
$this->assertEquals(newMixedPart($text,$att,$img),$e->getBody());
308308

309-
$e = (newEmail())->from('me@example.com');
309+
$e = (newEmail())->from('me@example.com')->to('you@example.com');
310310
$e->html($content ='html content <img src="test.gif">');
311311
$e->text('text content');
312312
$e->attach($file);
313313
$e->attach($image,'test.gif');
314314
$fullhtml =newTextPart($content,'utf-8','html');
315315
$this->assertEquals(newMixedPart(newAlternativePart($text,$fullhtml),$att,$img),$e->getBody());
316316

317-
$e = (newEmail())->from('me@example.com');
317+
$e = (newEmail())->from('me@example.com')->to('you@example.com');
318318
$e->html($content ='html content <img src="cid:test.gif">');
319319
$e->text('text content');
320320
$e->attach($file);
@@ -334,7 +334,7 @@ public function testGenerateBody()
334334
fwrite($r,$content);
335335
rewind($r);
336336

337-
$e = (newEmail())->from('me@example.com');
337+
$e = (newEmail())->from('me@example.com')->to('you@example.com');
338338
$e->html($r);
339339
// embedding the same image twice results in one image only in the email
340340
$e->embed($image,'test.gif');
@@ -373,6 +373,7 @@ public function testSerialize()
373373

374374
$e =newEmail();
375375
$e->from('fabien@symfony.com');
376+
$e->to('you@example.com');
376377
$e->text($r);
377378
$e->html($r);
378379
$name =__DIR__.'/Fixtures/mimetypes/test';

‎src/Symfony/Component/Mime/Tests/MessageConverterTest.php‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class MessageConverterTest extends TestCase
2121
publicfunctiontestToEmail()
2222
{
2323
$file =file_get_contents(__DIR__.'/Fixtures/mimetypes/test.gif');
24-
$email = (newEmail())->from('fabien@symfony.com');
24+
$email = (newEmail())->from('fabien@symfony.com')->to('you@example.com');
2525
$this->assertSame($email, MessageConverter::toEmail($email));
2626

2727
$this->assertConversion((clone$email)->text('text content'));

‎src/Symfony/Component/Mime/Tests/Part/MessagePartTest.php‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class MessagePartTest extends TestCase
2222
{
2323
publicfunctiontestConstructor()
2424
{
25-
$p =newMessagePart((newEmail())->from('fabien@symfony.com')->text('content'));
25+
$p =newMessagePart((newEmail())->from('fabien@symfony.com')->to('you@example.com')->text('content'));
2626
$this->assertStringContainsString('content',$p->getBody());
2727
$this->assertStringContainsString('content',$p->bodyToString());
2828
$this->assertStringContainsString('content',implode('',iterator_to_array($p->bodyToIterable())));

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp