Skip to content

Commit 29efca0

Browse files
committed
WIP
1 parent c40a851 commit 29efca0

File tree

3 files changed

+87
-40
lines changed

3 files changed

+87
-40
lines changed

src/SendInBlueTransport.php

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
namespace Leeovery\LaravelSendInBlue;
44

5-
use Swift_MimePart;
65
use Swift_Mime_SimpleMessage;
76
use SendinBlue\Client\Api\SMTPApi;
87
use Illuminate\Mail\Transport\Transport;
@@ -37,6 +36,7 @@ public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = nul
3736

3837
$recipients = $this->getRecipients($message);
3938

39+
$message->setCc([]);
4040
$message->setBcc([]);
4141

4242
$response = $this->client->sendTransacEmail(
@@ -52,8 +52,34 @@ public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = nul
5252
return $this->numberOfRecipients($message);
5353
}
5454

55+
/**
56+
* Get all the addresses this message should be sent to.
57+
*
58+
* @param Swift_Mime_SimpleMessage $message
59+
* @return array
60+
*/
61+
protected function getRecipients(Swift_Mime_SimpleMessage $message)
62+
{
63+
$recipients = [];
64+
65+
foreach ((array) $message->getTo() as $email => $name) {
66+
$recipients['to'][] = compact('email', 'name');
67+
}
68+
69+
foreach ((array) $message->getCc() as $email => $name) {
70+
$recipients['cc'][] = compact('email', 'name');
71+
}
72+
73+
foreach ((array) $message->getBcc() as $email => $name) {
74+
$recipients['bcc'][] = compact('email', 'name');
75+
}
76+
77+
return $recipients;
78+
}
79+
5580
/**
5681
* @param Swift_Mime_SimpleMessage $message
82+
* @param array $recipients
5783
* @return SendSmtpEmail
5884
*/
5985
private function buildPayload(Swift_Mime_SimpleMessage $message, $recipients): SendSmtpEmail
@@ -69,37 +95,17 @@ private function buildPayload(Swift_Mime_SimpleMessage $message, $recipients): S
6995
'name' => current($from),
7096
'email' => key($from),
7197
],
72-
'to' => $recipients,
98+
'to' => $recipients['to'],
99+
'cc' => $recipients['cc'] ?? [],
100+
'bcc' => $recipients['bcc'] ?? [],
73101
'htmlContent' => $message->getBody(),
74102
//'textContent' => '',
75103
'subject' => $message->getSubject(),
76104
]);
77105
}
78106

79-
/**
80-
* Get all the addresses this message should be sent to.
81-
*
82-
* Note that SparkPost still respects CC, BCC headers in raw message itself.
83-
*
84-
* @param Swift_Mime_SimpleMessage $message
85-
* @return array
86-
*/
87-
protected function getRecipients(Swift_Mime_SimpleMessage $message)
107+
public function sibClient(): SMTPApi
88108
{
89-
$recipients = [];
90-
91-
foreach ((array) $message->getTo() as $email => $name) {
92-
$recipients[] = compact('name', 'email');
93-
}
94-
95-
foreach ((array) $message->getCc() as $email => $name) {
96-
$recipients[] = compact('name', 'email');
97-
}
98-
99-
foreach ((array) $message->getBcc() as $email => $name) {
100-
$recipients[] = compact('name', 'email');
101-
}
102-
103-
return $recipients;
109+
return $this->client;
104110
}
105111
}

tests/ExampleTest.php

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?php
2+
3+
namespace Leeovery\LaravelSendInBlue\Tests;
4+
5+
use Swift_Message;
6+
use Orchestra\Testbench\TestCase;
7+
use SendinBlue\Client\Api\SMTPApi;
8+
use SendinBlue\Client\Model\SendSmtpEmail;
9+
use SendinBlue\Client\Model\CreateSmtpEmail;
10+
use Leeovery\LaravelSendInBlue\SendInBlueTransport;
11+
12+
class MailSendInBlueTransportTest extends TestCase
13+
{
14+
public function testSend()
15+
{
16+
$message = new Swift_Message('Foo subject', 'Bar body');
17+
$message->setSender('[email protected]');
18+
$message->setTo('[email protected]');
19+
$message->setCc('[email protected]');
20+
21+
$client = $this->getMockBuilder(SMTPApi::class)
22+
->setMethods(['sendTransacEmail'])
23+
->disableOriginalConstructor()
24+
->getMock();
25+
26+
$transport = new SendInBlueTransport($client);
27+
28+
$input = new SendSmtpEmail([
29+
'sender' => [
30+
'name' => null,
31+
'email' => '[email protected]',
32+
],
33+
'replyTo' => [
34+
'name' => null,
35+
'email' => '[email protected]',
36+
],
37+
'to' => [
38+
['name' => null, 'email' => '[email protected]'],
39+
],
40+
'cc' => [
41+
['name' => null, 'email' => '[email protected]'],
42+
],
43+
'bcc' => [],
44+
'htmlContent' => $message->getBody(),
45+
'subject' => 'Foo subject',
46+
]);
47+
48+
$client->expects($this->once())
49+
->method('sendTransacEmail')
50+
->with($input)
51+
->willReturn(new CreateSmtpEmail(['messageId' => '123']));
52+
53+
$transport->send($message);
54+
}
55+
}

0 commit comments

Comments
 (0)