【发布时间】:2011-01-08 02:47:20
【问题描述】:
在给定电子邮件地址的情况下,有没有办法确定 POP 或 IMAP 服务器?我正在为非技术用户构建一个应用程序,我真的不想打扰他们询问他们的 IMAP/POP 服务器。 mail2web.com 这样做,但我不确定如何。
【问题讨论】:
标签: imap pop3 email-client
在给定电子邮件地址的情况下,有没有办法确定 POP 或 IMAP 服务器?我正在为非技术用户构建一个应用程序,我真的不想打扰他们询问他们的 IMAP/POP 服务器。 mail2web.com 这样做,但我不确定如何。
【问题讨论】:
标签: imap pop3 email-client
Thunderbird 3 也这样做了。我会看看源代码。
我认为这只是一个查找表..
【讨论】:
标准中没有任何内容规定给定域的 POP/IMAP 服务器。只能使用约定,或者如 Joril 建议的那样,可以使用查找表。 SMTP 服务器有所不同,因为有将邮件发送到下一站的功能要求。取件(通过 POP/IMAP)完全是本地域管理问题。对不起。
我猜你可以使用域并建立一个服务器名称,使 fred@mymail.com 变为 pop.mymail.com 和 imap.mymail.com。或者也许更进一步并询问 MX 记录并执行类似的替换。然后,您可以遍历候选服务器列表以查找 POP/IMAP 响应。不过在安全方面可能有点狡猾。
干杯, 丹
【讨论】:
一般来说,绝对没有办法正确地做到这一点。
但是,您可以使用常见邮件提供商的表格来填写默认值,您可以填写 smtp.example.com 等...但是在某些简单的情况下仍然会失败,例如我的工作系统中的所有内容位于 mail.wherever.com 的异常端口号上。所以最终,用户必须能够覆盖你所做的任何事情。
如果您真的希望它是通用的,那么您还必须处理证书和 EAP。
【讨论】:
这就是 Thunderbird 的做法
/**
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 */
【讨论】:
雷鸟做得很好。它的方法在这里描述https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration。以下是文档的摘录。
所有查找机制都使用电子邮件地址域作为查找的基础。例如,对于电子邮件地址 fred@example.com ,查找执行如下(按此顺序):
我们将来可能会添加 DNS SRV 记录作为未来支持的机制,但我们目前没有。
【讨论】: