有没有办法在给定电子邮件地址的情况下确定 POP 或 IMAP 服务器?我正在为非技术用户构建一个应用程序,我真的不想打扰他们询问他们的 IMAP/POP 服务器。mail2web.com这样做,但我不知道如何。
5 回答
这就是雷鸟的做法
/**
18 * Try to guess the config, by:
19 * - guessing hostnames (pop3.<domain>, pop.<domain>, imap.<domain>,
20 * mail.<domain> etc.)
21 * - probing known ports (for IMAP, POP3 etc., with SSL, STARTTLS etc.)
22 * - opening a connection via the right protocol and checking the
23 * protocol-specific CAPABILITIES like that the server returns.
24 */
Thunderbird 3也可以。我会看一下源代码。
我认为这只是一个查找表..
标准中没有任何内容规定给定域的 POP/IMAP 服务器。只能使用约定,或者如 Joril 建议的那样,可以使用查找表。SMTP 服务器有所不同,因为有将邮件发送到下一站的功能要求。取件(通过 POP/IMAP)完全是本地域管理问题。对不起。
我想您可以获取域并构建一个服务器名称,使 fred@mymail.com 变为 pop.mymail.com 和 imap.mymail.com。或者也许更进一步,询问 MX 记录并执行类似的替换。然后,您可以遍历候选服务器列表以寻找 POP/IMAP 响应。不过在安全方面可能有点狡猾。
干杯,丹
一般来说,绝对没有办法正确地做到这一点。
但是,您可以使用常见邮件提供商的表格来填写默认值,您可以填写 smtp.example.com 等...但是在某些简单的情况下仍然会失败,例如我的工作系统,所有内容都在邮件上.wherever.com 在异常端口号上。所以最后,用户必须能够覆盖你所做的任何事情。
如果您真的希望它是通用的,那么您还必须处理证书和 EAP。
雷鸟做得很好。这里描述了它的方法https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration。以下是文档的摘录。
所有查找机制都使用电子邮件地址域作为查找的基础。例如,对于电子邮件地址 fred@example.com ,查找执行如下(按此顺序):
- tb-install-dir/isp/example.com.xml 在硬盘上
- 检查 autoconfig.example.com
- 在 ISPDB 中查找“example.com”
- 在 DNS 中查找“MX example.com”,对于 mx1.mail.hoster.com,在 ISPDB 中查找“hoster.com”
- 尝试猜测(imap.example.com、smtp.example.com 等)
我们将来可能会添加 DNS SRV 记录作为支持的机制,但我们目前没有。