Skip to content

Commit 45d16f6

Browse files
authoredSep 4, 2018
Merge pull request #3 from dghyse/feature/fixEmbedAttachments
Add Embed managment
2 parents 0d4a1ba + da9929c commit 45d16f6

File tree

3 files changed

+56
-20
lines changed

3 files changed

+56
-20
lines changed
 

‎src/Mailer.php

+6
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,12 @@ public function sendMessage($message)
134134
$mailJetMessage['Attachments'] = $attachments;
135135
}
136136

137+
//Get inilined attachments
138+
$inlinedAttachments = $message->getInlinedAttachments();
139+
if ($inlinedAttachments !== null) {
140+
$mailJetMessage['InlinedAttachments'] = $inlinedAttachments;
141+
}
142+
137143
$headers = $message->getHeaders();
138144
if (empty($headers) === false) {
139145
$mailJetMessage['Headers'] = $headers;

‎src/Message.php

+34-4
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,11 @@ class Message extends BaseMessage
8686
*/
8787
protected $attachments = [];
8888

89+
/**
90+
* @var array
91+
*/
92+
protected $inlinedAttachments = [];
93+
8994
/**
9095
* @var string
9196
*/
@@ -496,6 +501,31 @@ public function getAttachments()
496501
}
497502
}
498503

504+
/**
505+
* @return array|null list of inlinedAttachments
506+
* @since XXX
507+
*/
508+
public function getInlinedAttachments()
509+
{
510+
if (empty($this->inlinedAttachments) === true) {
511+
return null;
512+
} else {
513+
$inlinedAttachments = array_map(function($inlinedAttachment) {
514+
$item = [
515+
'ContentType' => $inlinedAttachment['ContentType'],
516+
'Filename' => $inlinedAttachment['Name'],
517+
'Base64Content' => $inlinedAttachment['Content'],
518+
];
519+
if (isset($inlinedAttachment['ContentID']) === true) {
520+
$item['ContentID'] = $inlinedAttachment['ContentID'];
521+
}
522+
return $item;
523+
}, $this->inlinedAttachments);
524+
return $inlinedAttachments;
525+
}
526+
}
527+
528+
499529
/**
500530
* @inheritdoc
501531
*/
@@ -558,8 +588,8 @@ public function embed($fileName, array $options = [])
558588
} else {
559589
$embed['ContentType'] = 'application/octet-stream';
560590
}
561-
$embed['ContentID'] = 'cid:' . uniqid();
562-
$this->attachments[] = $embed;
591+
$embed['ContentID'] = uniqid();
592+
$this->inlinedAttachments[] = $embed;
563593
return $embed['ContentID'];
564594
}
565595

@@ -581,8 +611,8 @@ public function embedContent($content, array $options = [])
581611
} else {
582612
$embed['ContentType'] = 'application/octet-stream';
583613
}
584-
$embed['ContentID'] = 'cid:' . uniqid();
585-
$this->attachments[] = $embed;
614+
$embed['ContentID'] = uniqid();
615+
$this->inlinedAttachments[] = $embed;
586616
return $embed['ContentID'];
587617
}
588618

‎tests/unit/MessageTest.php

+16-16
Original file line numberDiff line numberDiff line change
@@ -245,28 +245,28 @@ public function testGettersSetters()
245245
$this->assertEquals(base64_encode('plop'), $message->getAttachments()[3]['Base64Content']);
246246

247247
$cid = $message->embed(__FILE__, ['fileName' => 'file.php', 'contentType' => 'text/plain']);
248-
$this->assertEquals('file.php', $message->getAttachments()[4]['Filename']);
249-
$this->assertEquals('text/plain', $message->getAttachments()[4]['ContentType']);
250-
$this->assertEquals(base64_encode(file_get_contents(__FILE__)), $message->getAttachments()[4]['Base64Content']);
251-
$this->assertEquals($cid, $message->getAttachments()[4]['ContentID']);
248+
$this->assertEquals('file.php', $message->getInlinedAttachments()[0]['Filename']);
249+
$this->assertEquals('text/plain', $message->getInlinedAttachments()[0]['ContentType']);
250+
$this->assertEquals(base64_encode(file_get_contents(__FILE__)), $message->getInlinedAttachments()[0]['Base64Content']);
251+
$this->assertEquals($cid, $message->getInlinedAttachments()[0]['ContentID']);
252252

253253
$cid = $message->embed(__FILE__);
254-
$this->assertEquals('MessageTest.php', $message->getAttachments()[5]['Filename']);
255-
$this->assertEquals('application/octet-stream', $message->getAttachments()[5]['ContentType']);
256-
$this->assertEquals(base64_encode(file_get_contents(__FILE__)), $message->getAttachments()[5]['Base64Content']);
257-
$this->assertEquals($cid, $message->getAttachments()[5]['ContentID']);
254+
$this->assertEquals('MessageTest.php', $message->getInlinedAttachments()[1]['Filename']);
255+
$this->assertEquals('application/octet-stream', $message->getInlinedAttachments()[1]['ContentType']);
256+
$this->assertEquals(base64_encode(file_get_contents(__FILE__)), $message->getInlinedAttachments()[1]['Base64Content']);
257+
$this->assertEquals($cid, $message->getInlinedAttachments()[1]['ContentID']);
258258

259259
$cid = $message->embedContent('plop', ['fileName' => 'file.php', 'contentType' => 'text/plain']);
260-
$this->assertEquals('file.php', $message->getAttachments()[6]['Filename']);
261-
$this->assertEquals('text/plain', $message->getAttachments()[6]['ContentType']);
262-
$this->assertEquals(base64_encode('plop'), $message->getAttachments()[6]['Base64Content']);
263-
$this->assertEquals($cid, $message->getAttachments()[6]['ContentID']);
260+
$this->assertEquals('file.php', $message->getInlinedAttachments()[2]['Filename']);
261+
$this->assertEquals('text/plain', $message->getInlinedAttachments()[2]['ContentType']);
262+
$this->assertEquals(base64_encode('plop'), $message->getInlinedAttachments()[2]['Base64Content']);
263+
$this->assertEquals($cid, $message->getInlinedAttachments()[2]['ContentID']);
264264

265265
$cid = $message->embedContent('plop', ['fileName' => 'file.php']);
266-
$this->assertEquals('file.php', $message->getAttachments()[7]['Filename']);
267-
$this->assertEquals('application/octet-stream', $message->getAttachments()[7]['ContentType']);
268-
$this->assertEquals(base64_encode('plop'), $message->getAttachments()[7]['Base64Content']);
269-
$this->assertEquals($cid, $message->getAttachments()[7]['ContentID']);
266+
$this->assertEquals('file.php', $message->getInlinedAttachments()[3]['Filename']);
267+
$this->assertEquals('application/octet-stream', $message->getInlinedAttachments()[3]['ContentType']);
268+
$this->assertEquals(base64_encode('plop'), $message->getInlinedAttachments()[3]['Base64Content']);
269+
$this->assertEquals($cid, $message->getInlinedAttachments()[3]['ContentID']);
270270
}
271271

272272
public function testAttachException()

0 commit comments

Comments
 (0)
Please sign in to comment.