【发布时间】:2012-04-30 21:55:30
【问题描述】:
我们正在构建一个系统,它实际上是一个电子邮件/日历/联系人客户端。
用户将向我们提供他们的电子邮件地址密码(或其他身份验证,例如 oauth),我们将连接到他们的底层电子邮件系统。
“底层系统”包括:
- Microsoft Exchange / Office365
- GMail
- 雅虎邮箱
- Apple 电子邮件
- 通用 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”,我们就完成了。
- 如果以上都不是
- IMAP?
- ...
- IMAP?
[编辑:5/18] 我构建了一个原型,它使用不需要身份验证的方法(例如,只是 MX/SMTP sluthing)。试试看:http://bit.ly/KLZKxD
【问题讨论】:
标签: email calendar email-validation email-client