我们正在构建一个系统,它实际上是一个电子邮件/日历/联系人客户端。
用户将向我们提供他们的电子邮件地址密码(或其他身份验证,例如 oauth),我们将连接到他们的底层电子邮件系统。
“基础系统”包括:
- 微软交换/Office365
- 邮件
- 雅虎邮箱
- 苹果电子邮件
- 通用 IMAP
这些系统中的每一个在其 API 中都有细微的(而不是那么细微的)差异,尤其是在访问日历和联系人数据方面。因此,我们需要知道用户正在使用哪个提供者。
但我们宁愿不问用户。我们想自动解决(并且至少减少选择)。
我四处寻找已经实现但没有找到任何东西的东西。我知道这很可能是因为 Windows Phone 做得很好(只需输入用户名/密码,它就会做正确的事情)。
在我开始写自己的文章之前,我想确保如果有人已经以出色的方式完成它,我不会浪费我的时间。
知道这样的事情吗?对于这个项目,首选 C#/.NET。
[编辑:添加潜在算法]
潜在算法:
- 给定电子邮件地址和密码
- 从电子邮件地址中提取域名
- 尝试 Exchange 自动发现。如果成功完成。
- 使用 DNS MX 记录查找 smtp 主机。
- 做 SMTP EHLO
- Gmail 回复“250-mx.google.com 随时为您服务”
- 因此,如果我们看到“google.com”,我们就完成了。
- 雅虎回复 250-mta1257.mail.sk1.yahoo.com
- 因此,如果我们在响应中看到“yahoo.com”,我们就完成了。
- Apple 回复 250-xxxxxx-mac.com
- 因此,如果我们在响应中看到“mac.com”,我们就完成了。
- 如果以上都不是
- 地图?
- ...
- 地图?
[编辑:5/18] 我构建了一个原型,它使用不需要身份验证的方法(例如,只是 MX/SMTP sluthing)。试一试:http ://bit.ly/KLZKxD