Skip to content

Commit

Permalink
add ability to set replyTo address Mail channel, add test replyto
Browse files Browse the repository at this point in the history
  • Loading branch information
sald19 committed Nov 5, 2016
1 parent fcd0a3f commit 484cfcb
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/Illuminate/Notifications/Channels/MailChannel.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ public function send($notifiable, Notification $notification)
$m->cc($message->cc);
}

if (! empty($message->replyTo)) {
$m->replyTo($message->replyTo[0], isset($message->replyTo[1]) ? $message->replyTo[1] : null);
}

$m->subject($message->subject ?: Str::title(
Str::snake(class_basename($notification), ' ')
));
Expand Down
21 changes: 21 additions & 0 deletions src/Illuminate/Notifications/Messages/MailMessage.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,13 @@ class MailMessage extends SimpleMessage
*/
public $cc = [];

/**
* The "reply to" recipients of the message.
*
* @var array
*/
public $replyTo= [];

/**
* The attachments for the message.
*
Expand Down Expand Up @@ -118,6 +125,20 @@ public function cc($address)
return $this;
}

/**
* Set the "reply to" address of the message.
*
* @param array|string $address
* @param null $name
* @return $this
*/
public function replyTo($address, $name = null)
{
$this->replyTo = [$address, $name];

return $this;
}

/**
* Attach a file to the message.
*
Expand Down
80 changes: 80 additions & 0 deletions tests/Notifications/NotificationMailChannelTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,68 @@ public function testMessageWithToAddress()
$channel->send($notifiable, $notification);
}

public function testMessageWithReplyToAddress()
{
$notification = new NotificationMailChannelTestNotificationWithReplyToAddress;
$notifiable = new NotificationMailChannelTestNotifiable;

$message = $notification->toMail($notifiable);
$data = $message->toArray();

$channel = new Illuminate\Notifications\Channels\MailChannel(
$mailer = Mockery::mock(Illuminate\Contracts\Mail\Mailer::class)
);

$views = ['notifications::email', 'notifications::email-plain'];

$mailer->shouldReceive('send')->with($views, $data, Mockery::on(function ($closure) {
$mock = Mockery::mock('Illuminate\Mailer\Message');

$mock->shouldReceive('subject')->once();

$mock->shouldReceive('to')->once();

$mock->shouldReceive('replyTo')->with('test@mail.com', 'Test Man');

$closure($mock);

return true;
}));

$channel->send($notifiable, $notification);
}

public function testMessageWithReplyToAddressAndNoName()
{
$notification = new NotificationMailChannelTestNotificationWithReplyToAddressNoName;
$notifiable = new NotificationMailChannelTestNotifiable;

$message = $notification->toMail($notifiable);
$data = $message->toArray();

$channel = new Illuminate\Notifications\Channels\MailChannel(
$mailer = Mockery::mock(Illuminate\Contracts\Mail\Mailer::class)
);

$views = ['notifications::email', 'notifications::email-plain'];

$mailer->shouldReceive('send')->with($views, $data, Mockery::on(function ($closure) {
$mock = Mockery::mock('Illuminate\Mailer\Message');

$mock->shouldReceive('subject')->once();

$mock->shouldReceive('to')->once();

$mock->shouldReceive('replyTo')->with('test@mail.com', null);

$closure($mock);

return true;
}));

$channel->send($notifiable, $notification);
}

public function testMessageWithToCcEmails()
{
$notification = new NotificationMailChannelTestNotificationWithCcEmails;
Expand Down Expand Up @@ -358,6 +420,24 @@ public function toMail($notifiable)
}
}

class NotificationMailChannelTestNotificationWithReplyToAddress extends Notification
{
public function toMail($notifiable)
{
return (new MailMessage)
->replyTo('test@mail.com', 'Test Man');
}
}

class NotificationMailChannelTestNotificationWithReplyToAddressNoName extends Notification
{
public function toMail($notifiable)
{
return (new MailMessage)
->replyTo('test@mail.com');
}
}

class NotificationMailChannelTestNotificationWithPriority extends Notification
{
public function toMail($notifiable)
Expand Down

0 comments on commit 484cfcb

Please sign in to comment.