public function __construct(Charcoal_String $address, Charcoal_String $label = NULL) { $this->address = $address; $this->label = $label; $valid = Charcoal_MailUtil::validateAddress(s($address)); if (!$valid) { _throw(new Charcoal_InvalidMailAddressException($address)); } }
private function _getAddressList($data) { $out = array(); if (is_string($data) || $data instanceof Charcoal_String) { // 表示名<メールアドレス>を自動変換 mb_regex_encoding('UTF-8'); $pattern = '/(?P<label>.*)\\<(?P<address>.*)\\>/'; $ret = preg_match($pattern, $data, $match); log_debug("debug, qdmail_sender", "preg_match data:" . print_r($data, true)); log_debug("debug, qdmail_sender", "preg_match({$ret}):" . print_r($match, true)); if ($ret) { // ラベルあり $label = $match['label']; $address = $match['address']; $valid = Charcoal_MailUtil::validateAddress(s($address)); if (!$valid) { _throw(new Charcoal_InvalidMailAddressException($address)); } $out[] = array($address, $label); } else { // アドレスは1つのみ、表示名なし $valid = Charcoal_MailUtil::validateAddress(s($data)); if (!$valid) { _throw(new Charcoal_InvalidMailAddressException($data)); } $out[] = us($data); } } elseif ($data instanceof Charcoal_QdmailAddress) { // アドレスは1つのみ、QdmailAddressのインスタンス $address = $data; if ($address->hasLabel()) { $out[] = array($address->getAddress(), $address->getLabel()); } else { $out[] = us($address->getAddress()); } } elseif (is_array($data)) { // 配列の場合 foreach ($data as $item) { if (is_string($item) || $item instanceof Charcoal_String) { $item = trim($item); // 表示名<メールアドレス>を自動変換 mb_regex_encoding('UTF-8'); $pattern = '/(?P<label>.*)\\<(?P<address>.*)\\>/'; $ret = preg_match($pattern, $item, $match); log_debug("debug, qdmail_sender", "preg_match item:" . print_r($item, true)); log_debug("debug, qdmail_sender", "preg_match({$ret}):" . print_r($match, true)); if ($ret) { // ラベルあり $label = $match['label']; $address = $match['address']; $valid = Charcoal_MailUtil::validateAddress(s($address)); if (!$valid) { _throw(new Charcoal_InvalidMailAddressException($address)); } $out[] = array($address, $label); } else { // 表示名なし $valid = Charcoal_MailUtil::validateAddress(s($item)); if (!$valid) { _throw(new Charcoal_InvalidMailAddressException($item)); } $out[] = us($item); } } elseif ($item instanceof Charcoal_QdmailAddress) { // QdmailAddressのインスタンス $address = $item; if ($address->hasLabel()) { $out[] = array(us($address->getAddress()), us($address->getLabel())); } else { $out[] = us($address->getAddress()); } } } } return $out; }