gpt4 book ai didi

java - 在 Java 中解析 RFC 2822 电子邮件地址

转载 作者:搜寻专家 更新时间:2023-11-01 03:39:27 24 4
gpt4 key购买 nike

很多人都不知道,电子邮件地址需要一个库来解析。简单的正则表达式,如 @(.*),是不够的。电子邮件地址甚至可以包含评论,其中可以包含 @ 等字符,打破简单的正则表达式。

有一个Node.js library解析 RFC 2822 地址:

var address = addresses[0];
console.log("Email address: " + address.address);
console.log("Email name: " + address.name());
console.log("Reformatted: " + address.format());
console.log("User part: " + address.user());
console.log("Host part: " + address.host());

这几乎是 perl 模块 Mail::Address 的直接端口。

这是我希望在 Java 的 InternetAddress 中存在的东西类,但它不会比完整地址更进一步地分解内容,其中可以包括例如user@gmail.com。但我正在尝试提取 gmail.com 部分,它不包含要执行的方法。

我很惊讶我找不到一个通用的库来解决这个问题,但想必很多人都有这个问题。如何使用库或不使用库来解决这个问题?

最佳答案

如果您只需要从电子邮件地址中获取域部分(请注意邮件组,因为它们没有@),您可以这样做:

int index = "user@domain.com".lastIndexOf("@");
String domain = "user@domain.com".substring(index+1);

我在这里使用了 lastIndexOf,因为 RFC2822 电子邮件地址可能包含多个 @ 符号(如果它被转义)。如果您想跳过邮件组,InternetAddress 类中有方法 isGroup()

PS也可能是地址包含路由信息:

@donald.mit.edu,@mail.mit.edu:peter@hotmail.com

或者地址文字:

peter@[192.168.134.1]

关于java - 在 Java 中解析 RFC 2822 电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18498036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com