/**
  * Create EmailAddress entity object
  *
  * @param string $email The email address, for example: john@example.com or "John Smith" <*****@*****.**>
  * @return EmailAddress
  */
 public function address($email)
 {
     $pureEmail = EmailUtil::extractPureEmailAddress($email);
     $result = $this->batch->getAddress($pureEmail);
     if ($result === null) {
         $result = $this->emailAddressManager->newEmailAddress()->setEmail($pureEmail);
         $this->batch->addAddress($result);
     }
     return $result;
 }
 /**
  * Converts emails addresses to a form acceptable to \Swift_Mime_Message class
  *
  * @param string|string[] $addresses Examples of correct email addresses: john@example.com, <*****@*****.**>,
  *                                   John Smith <*****@*****.**> or "John Smith" <*****@*****.**>
  * @return array
  * @throws \InvalidArgumentException
  */
 protected function getAddresses($addresses)
 {
     $result = array();
     if (is_string($addresses)) {
         $addresses = array($addresses);
     }
     if (!is_array($addresses) && !$addresses instanceof \Iterator) {
         throw new \InvalidArgumentException('The $addresses argument must be a string or a list of strings (array or Iterator)');
     }
     foreach ($addresses as $address) {
         $name = EmailUtil::extractEmailAddressName($address);
         if (empty($name)) {
             $result[] = EmailUtil::extractPureEmailAddress($address);
         } else {
             $result[EmailUtil::extractPureEmailAddress($address)] = $name;
         }
     }
     return $result;
 }
 /**
  * @dataProvider emailAddressProvider
  */
 public function testExtractPureEmailAddress($fullEmailAddress, $pureEmailAddress, $name)
 {
     $this->assertEquals($pureEmailAddress, EmailUtil::extractPureEmailAddress($fullEmailAddress));
 }