私たちは、事実上、電子メール/カレンダー/連絡先クライアントであるシステムを構築しています。
ユーザーはメールアドレスのパスワード (または oauth などの他の認証) を提供し、基盤となるメールシステムに接続します。
「基礎となるシステム」には以下が含まれます。
- マイクロソフト エクスチェンジ / Office365
- Gメール
- ヤフーメール
- アップルのメール
- 汎用 IMAP
これらの各システムには、特にカレンダーと連絡先データにアクセスするための API に微妙な (それほど微妙ではない) 違いがあります。したがって、ユーザーが使用しているプロバイダーを知る必要があります。
しかし、私たちはむしろユーザーに質問したくありません。私たちはそれを自動的に把握したいと考えています (そして、少なくとも選択肢を減らしたいと考えています)。
すでにこれを実装しているものを探しましたが、何も見つかりませんでした。Windows Phone はかなりうまく機能するので、ほとんどの場合可能であることはわかっています (username/pw を入力するだけで、正しいことが行われます)。
飛び込んで自分で書き始める前に、誰かがすでに優れた方法で書いている場合、時間を無駄にしないようにしたいと思います。
このようなことを知っていますか?このプロジェクトでは、C#/.NET を優先します。
[編集: 潜在的なアルゴリズムの追加]
潜在的なアルゴリズム:
- 与えられたメールアドレスとパスワード
- メールアドレスからドメイン名を抽出
- Exchange の自動検出を試してください。成功した場合は完了です。
- DNS MX レコードを使用して smtp ホストを見つけます。
- SMTP EHLO を行う
- Gmail は「250-mx.google.com at your service」で応答します
- 「google.com」が表示されれば完了です。
- Yahoo は 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