承接 yarri/email-address-recognizer 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

yarri/email-address-recognizer

Composer 安装命令:

composer require yarri/email-address-recognizer

包简介

Parses and validates email addresses from To: or Cc: headers, including named addresses, quoted display names, and RFC 2822 groups.

README 文档

README

Tests

Parses email addresses from a To: or Cc: header value. Handles plain addresses, named addresses, quoted display names, and RFC 2822 group syntax. The result is iterable, countable, and accessible as an array.

Installation

composer require yarri/email-address-recognizer

Basic Usage

$ear = new Yarri\EmailAddressRecognizer('John Doe <john@doe.com>, samantha@doe.com');

count($ear);        // 2
$ear->isValid();    // true
echo $ear;          // "John Doe <john@doe.com>, samantha@doe.com"

$ear[0]->getAddress();     // "john@doe.com"
$ear[0]->getName();        // "John Doe"
$ear[0]->getFullAddress(); // "John Doe <john@doe.com>"
$ear[0]->getDomain();      // "doe.com"
$ear[0]->isValid();        // true

$ear[1]->getAddress();     // "samantha@doe.com"
$ear[1]->getName();        // ""
$ear[1]->getFullAddress(); // "samantha@doe.com"

Supported Address Formats

// Plain address
new Yarri\EmailAddressRecognizer('john@doe.com');

// Named address
new Yarri\EmailAddressRecognizer('John Doe <john@doe.com>');

// Quoted display name (allows commas and special characters in the name)
new Yarri\EmailAddressRecognizer('"Doe, John" <john@doe.com>');

// Multiple addresses
new Yarri\EmailAddressRecognizer('john@doe.com, Jane Doe <jane@doe.com>');

// RFC 2822 group syntax
new Yarri\EmailAddressRecognizer('IT: John Doe <john@doe.com>, jane@doe.com;');

// Multiple groups
new Yarri\EmailAddressRecognizer('IT: John Doe <john@doe.com>, jane@doe.com; Management: boss@company.com, cto@company.com;');

Iterating Over Addresses

EmailAddressRecognizer implements Iterator, Countable, and ArrayAccess:

$ear = new Yarri\EmailAddressRecognizer('john@doe.com, Jane Doe <jane@doe.com>');

foreach ($ear as $item) {
    echo $item->getAddress();  // "john@doe.com", then "jane@doe.com"
}

count($ear);  // 2
$ear[0];      // RecognizedItem for john@doe.com

Validation

isValid() returns true only when every parsed address is valid. Individual addresses can be checked separately:

$ear = new Yarri\EmailAddressRecognizer('john@doe.com, not-an-address');

$ear->isValid();       // false — at least one address is invalid

$ear[0]->isValid();    // true
$ear[1]->isValid();    // false
$ear[1]->getAddress(); // "" (empty for invalid addresses)

Input is normalized on output — extra whitespace is trimmed and trailing commas are dropped:

echo new Yarri\EmailAddressRecognizer('  john@doe.com ,  jane@doe.com  ');
// "john@doe.com, jane@doe.com"

RFC 2822 Groups

Group names are available via getGroup():

$ear = new Yarri\EmailAddressRecognizer('IT: John Doe <john@doe.com>, jane@doe.com;');

$ear[0]->getGroup(); // "IT"
$ear[1]->getGroup(); // "IT"

RecognizedItem

A single address string can be parsed directly using RecognizedItem:

$item = new Yarri\EmailAddressRecognizer\RecognizedItem('"Doe, John" <john@doe.com>');

$item->isValid();        // true
$item->getAddress();     // "john@doe.com"
$item->getName();        // "Doe, John"
$item->getFullAddress(); // '"Doe, John" <john@doe.com>'
$item->getDomain();      // "doe.com"
$item->getGroup();       // ""
echo $item;              // '"Doe, John" <john@doe.com>'

RecognizedItem is invalid if the input contains zero or more than one address:

(new Yarri\EmailAddressRecognizer\RecognizedItem(''))->isValid();                             // false
(new Yarri\EmailAddressRecognizer\RecognizedItem('john@doe.com, jane@doe.com'))->isValid();   // false

Testing

composer install --dev
cd test
../vendor/bin/run_unit_tests

License

EmailAddressRecognizer is free software distributed under the terms of the MIT license

yarri/email-address-recognizer 适用场景与选型建议

yarri/email-address-recognizer 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 616 次下载、GitHub Stars 达 1, 最近一次更新时间为 2022 年 04 月 16 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 yarri/email-address-recognizer 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 yarri/email-address-recognizer 我们能提供哪些服务?
定制开发 / 二次开发

基于 yarri/email-address-recognizer 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 616
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 13
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-04-16