@@ -340,6 +340,18 @@ public function to($address, $name = null)
340340 return $ this ->setAddress ($ address , $ name , 'to ' );
341341 }
342342
343+ /**
344+ * Determine if the given recipient is set on the mailable.
345+ *
346+ * @param object|array|string $address
347+ * @param string|null $name
348+ * @return bool
349+ */
350+ public function hasTo ($ address , $ name = null )
351+ {
352+ return $ this ->hasRecipient ($ address , $ name , 'to ' );
353+ }
354+
343355 /**
344356 * Set the recipients of the message.
345357 *
@@ -352,6 +364,18 @@ public function cc($address, $name = null)
352364 return $ this ->setAddress ($ address , $ name , 'cc ' );
353365 }
354366
367+ /**
368+ * Determine if the given recipient is set on the mailable.
369+ *
370+ * @param object|array|string $address
371+ * @param string|null $name
372+ * @return bool
373+ */
374+ public function hasCc ($ address , $ name = null )
375+ {
376+ return $ this ->hasRecipient ($ address , $ name , 'cc ' );
377+ }
378+
355379 /**
356380 * Set the recipients of the message.
357381 *
@@ -364,6 +388,18 @@ public function bcc($address, $name = null)
364388 return $ this ->setAddress ($ address , $ name , 'bcc ' );
365389 }
366390
391+ /**
392+ * Determine if the given recipient is set on the mailable.
393+ *
394+ * @param object|array|string $address
395+ * @param string|null $name
396+ * @return bool
397+ */
398+ public function hasBcc ($ address , $ name = null )
399+ {
400+ return $ this ->hasRecipient ($ address , $ name , 'bcc ' );
401+ }
402+
367403 /**
368404 * Set the "reply to" address of the message.
369405 *
@@ -433,6 +469,34 @@ protected function normalizeRecipient($recipient)
433469 return $ recipient ;
434470 }
435471
472+ /**
473+ * Determine if the given recipient is set on the mailable.
474+ *
475+ * @param object|array|string $address
476+ * @param string|null $name
477+ * @param string $property
478+ * @return bool
479+ */
480+ protected function hasRecipient ($ address , $ name = null , $ property = 'to ' )
481+ {
482+ $ expected = $ this ->normalizeRecipient (
483+ $ this ->addressesToArray ($ address , $ name )[0 ]
484+ );
485+
486+ $ expected = [
487+ 'name ' => isset ($ expected ->name ) ? $ expected ->name : null ,
488+ 'address ' => $ expected ->email ,
489+ ];
490+
491+ return collect ($ this ->{$ property })->contains (function ($ actual ) use ($ expected ) {
492+ if (! isset ($ expected ['name ' ])) {
493+ return $ actual ['address ' ] == $ expected ['address ' ];
494+ } else {
495+ return $ actual == $ expected ;
496+ }
497+ });
498+ }
499+
436500 /**
437501 * Set the subject of the message.
438502 *
0 commit comments