如何正确解析名称中的电子邮件地址?

Sha*_*oon 0 parsing email-headers node.js

我正在阅读电子邮件标题(在Node.js中,对于那些保持分数的人),并且它们是多变的.该to字段中的电子邮件地址如下所示:

"Jake Smart" <jake@smart.com>, jack@smart.com, "Development, Business" <bizdev@smart.com>
Run Code Online (Sandbox Code Playgroud)

以及其他各种格式.有没有办法解析所有这些?

这是我的第一次刺:

  1. 运行split()-不同的人分手到一个数组
  2. 对于每个项目,看看是否有<".
  3. 如果有<,则解析出电子邮件
  4. 如果有",则解析出名称
  5. 对于名称,如果有a ,,则拆分以获取Last,First名称.

如果我先对它进行拆分,,Development, Business则会导致拆分错误.空间也不一致.此外,我之前从未见过的标题中可能会有更多的电子邮件地址格式.有什么方法(或者可能是一个很棒的Node.js库)会为我做这一切吗?

And*_*ris 6

这有一个npm模块 - mimelib(如果你在windows上或者不想编译node-iconv,则为mimelib-noiconv)

npm install mimelib-noiconv
Run Code Online (Sandbox Code Playgroud)

用法是:

var mimelib = require("mimelib-noiconv");
var addressStr = 'jack@smart.com, "Development, Business" <bizdev@smart.com>';
var addresses = mimelib.parseAddresses(addressStr);

console.log(addresses);
// [{ address: 'jack@smart.com', name: '' },
//  { address: 'bizdev@smart.com', name: 'Development, Business' }]
Run Code Online (Sandbox Code Playgroud)

  • 或者对于可以移植代码的node/js版本,只需直接使用addressparser模块:https://npmjs.org/package/addressparser (2认同)