複数Account APIの利用
By Alec Flett alecf@netscape.com- 構造
- Storage
- 新しい account の作成
- SMTP Servers
- Appendix A: 全ての preference と propertie の一覧
Structure
account system は以下からなります。:
- Account Manager (nsIMsgAccountManager): client の中には、account、server などの一覧を扱う1つの account manager があります。 acount に関係した新しい object の生成の責任がたいていあります。 account managerは、accountのmain の list を扱います。
- Account (nsIMsgAccount): 1つの account は1つの single incoming server と1つ以上の identity からなります。 1つの account は、1つの imcoming server と identity を共に結びつける1つの container にすぎません。
- Incoming Server (nsIMsgIncomingServer): 1つの incoming server は、POP,IMAP,NNTP server のような1つのremote message の保存を表現します。 それは hostname, user login name と通知の設定のような remote server から mail を集めるために必要な全ての情報を保持します。
- Identity (nsIMsgIdentity): 1つの identity は、outgoing mail message を構成するのに必要な全ての情報を含みます。 それは、user の full name と e-mail address を含みます。
- SMTP Server(nsISmtpServer): 1つの SMTP server は、特定のものには結びつけられず、 SMTP Service (nsISmtpService)から得ることができます。
(ありのままなのは御了承ください)
+- Account 1
| +- Incoming Server 1 (imap.mywork.com IMAP Server, my work account)
| +- Identity 1 (Alec Flett <alecf@mywork.com>)
+- Account 2
| +- Incoming Server 2 (pop.myisp.com POP Server, my ISP account)
| +- Identity 2 (Alec Flett <alecf@myisp.com>)
+- Account 3
| +- Incoming Server 3 (news.myisp.com NNTP server, my ISP's server)
| +- Identity 3 (Alec Flett <alecfNOSPAM@myisp.com>)
+- Account 4
+- Incoming Server 4 (news.mozilla.org NNTP server, mozilla devel)
+- Identity 2 (Alec Flett <alecf@myisp.com>)
+- Identity 3 (Alec Flett <alecfNOSPAM@myisp.com>)
これは、mail client が接続する実際の構造ですが、 しかし、いくつか異なった方法でユーザーが登録されています。
(identity の2, 3はいくつかの account の間で共有されることに気がつくでしょう...詳しくは後で)
Server
Server は、新しい dialog、serarch、filter などの folder の panel や、user が一覧を見たり folder を選択する必要のある場所で、表示されます。 この view は、全ての server の同一で統一された1つの view を表示します。 上の例は、次のようです。:
alecf on imap.mywork.com
+- INBOX
+- Trash
+- (etc)
alecf on pop.myisp.com
+- INBOX
+- Trash
+- (etc)
news.myisp.com
+- comp.os.linux.announce
+- etc..
news.mozilla.org
+- netscape.public.mozilla.announce
+- netscape.public.mozilla.mail-news
- nsIMsgAccount.incomingServer
- nsIMsgAccountManager.allServers: 全ての account によって保持されている全ての server の一覧。
Identity(送信者)
Identity はcompose window (mail 作成 window)で使われます。 もし、identity が、account の間で共有されるならば、一覧の中では一度だけその identity を見ることができるでしょう。
上の例では、identity の一覧は次のようです。:
Alec Flett <alecf@mywork.com>)
Alec Flett <alecf@myisp.com>)
Alec Flett <alecfNOSPAM@myisp.com>)
- nsIMsgAccount.identities
- nsIMsgAccountManager.allServers: 全ての account がアクセスする全ての server のリスト。
Storage
account は preference に保存されます。account, identity, server はkeyに全て link されます。Key は、それぞれの account, identity, server を一意に識別する内部的な簡単な string です。 key は object の data を保持している preference のそれぞれの名前の決定するために主に使われます。
1つの例として、上の構造は、次のようにあなたの preference で表現されるでしょう。:
user_pref("mail.accountmanager.accounts", "account1,account2,account3");
user_pref("mail.account.account1.server", "server1");
user_pref("mail.account.account1.identities", "id1");
user_pref("mail.account.account2.server", "server2");
user_pref("mail.account.account2.identities", "id3");
user_pref("mail.account.account3.server", "server3");
user_pref("mail.account.account3.identities", "id3");
user_pref("mail.account.account4.server", "server4");
user_pref("mail.account.account4.identities", "id2,id3");
user_pref("mail.server.server1.hostname", "imap.mywork.com");
user_pref("mail.server.server2.hostname", "pop.myisp.com");
user_pref("mail.server.server3.hostname", "news.myisp.com");
user_pref("mail.server.server4.hostname", "news.mozilla.org");
user_pref("mail.identity.id1.useremail", "alecf@mywork.com");
user_pref("mail.identity.id2.useremail", "alecf@myisp.com");
user_pref("mail.identity.id3.useremail", "alecfNOSPAM@myisp.com");
もちろん、ここでは多くの情報を省略しています。
ここで使われているkeyは、account1、server1、id1等です。それらの key は、 "mail.accountmanager.accounts"のようなそれらの preference のいくつかの値の中でリストされ、"mail.account.account1.server"のような prefecence name を構成するために使われます。 この方法で、account は、server はどれか、それを含む identity はどれかを知ります。
new account の作成
account manager API を通して acount を生成、変更することが可能です。account manager は、全ての account、内部的な server、identity の生成の責務があります。 関連した何かの object を生成する CreateInstance() を使う必要はありません。 なぜなら、account manager は、それら object が生成されるのと同じく、その全ての過程を管理する必要があります。
その API を使って account を作るために、次のようにしなければなりません。:
- createIdentity() で1つ新しい identity を作りなさい。
- 必要なだけ様々な identity の property のために値を割り当てなさい。
- createIncomingServer() で新しい incoming server を作りなさい。 一覧の上から、server typeをstring で、それに渡す必要があるでしょう。
- 必要なだけ様々な server property のために値を割り当てなさい。 ここで最も重要な property は userName と hostname です。
- createAccount() で1つ新しい account を作りなさい。
- incomingServer 属性を持つ account のための server を割り当てなさい。
- AddIdentity() method を持つ account のために identity を割り当てなさい。
いくつかの sample code: (accountManager が account manager です。
var identity = accountManager.createIdentity();
identity.email="fred@myisp.com";
var server = accountManager.createIncomingServer("pop3");
z|y6qィyи舍アq鑷レqウqサ!
er.hostname = "pop.myisp.com";
var account = accountManager.createAccount();
account.incomingServer = server;
account.AddIdentity(identity);
そうです。今、あなたは1つの有効な account, identity, server を得たのです。
server と identity の key を伴ったいくつかの仕掛けを通して、 account の間で server と identity を共有することは可能です。 preference の中の同じ identity あるいは server key を参照すること、あるいは、よりうまくは、account manager を呼ぶことで、これを行うことができます。 (読者のために1つ課題として残します。) これは動作するでしょうが、しかし、support されません。 account の間で情報を共有する時、 UI は、わずかに不思議な振舞をするでしょう。 現在の計画は、UI を使っている account の間で情報の共有をさせません。
関連する API call:
- nsIMsgAccount nsIMsgAccountManager.createAccount()
- nsIMsgAccount nsIMsgAccountManager.getAccount(in string key)
- nsIMsgIncomingServer nsIMsgAccountManager.createIncomingServer(in string type)
- nsIMsgIncomingServer nsIMsgAccountManager.getIncomingServer(in string key)
SMTP Servers
SMTP Server は、ほかの全ての account management の要素から、分けて保持されます。 user の SMTP server は、今のところ、その account の設定の何にも依存していません。 user がどの SMTP server を使う必要があるか決定するのは、その internet への物理的な接続だけです。 例えば、user が MyISP Inc. を通して internet へ接続する場合、 彼、あるいは、彼女は、MyISP の SMTP server を使わなければなりません。たとえ彼らがどんな identity で mail を送っていてもです。
SMTP server list は、SMTP Service を通してアクセス可能です。server を加え(または、実際に削除し)、1つの default server を持つことができます。
SMTP server は、account のようにf、1つのルールの中であなたの preference へ保存されます。:
user_pref("mail.smtpservers", "server1,server2");
user_pref("mail.smtpserver.server1.hostname", "smtp.myisp.com");
user_pref("mail.smtpserver.server2.hostname", "smtp.mywork.com");
SMTP service を使って新しい SMTP server を加えることができます。
var server = smtpService.createSmtpServer();
server.hostname = "smtp.myisp.com";
default SMTP server は、あなたの preference の list の中の始めの server です。 現在、smtpService の defaultServer property を設定することで何か他のものに default SMTP server を設定できますが、 それは disk へ保存さえないでしょう。 session default server と permenant default server の概念があります。
関連する API call:- nsISmtpService.smtpServers: SMTP server の list
- nsISmtpService.createSmtpServer(): 1つ新しい SMTP server を生成します。
- nsISmtpServer.hostname, nsISmtpServer.username: SMTP server の有効な property
付録 A: 全ての property の list
(brendan の idldoc がこちらに来たら, それに link するでしょう。)
全ての preference は string で、別の方法で記載されません。
Account Manager
Account
Incoming Servers
- Preference: mail.server.server.type : server type の string id: pop3, nntp, imap, or local
- Preference: mail.server.server.hostname - server の hostname
- Preference: mail.server.server.username - user login name
- Preference: mail.server.server.password - user login password
- Preference: mail.server.server.check_new_mail - boolean, 定期的に新しい mail を check する必要がありますか?
- Preference: mail.server.server.check_time - integer, 新しい mail を check する間隔(分)
- Preference: mail.server.server.remember_password - boolean, password を保存する必要がありますか?
- Preference: mail.server.server.download_on_biff. - boolean, 新着確認で新しい message を download するなら true、user に新しい mail があることを通知するなら false。
- Preference: mail.server.server.directory - message と folder の index を保存する local な platform に特化した path
- Preference: mail.server.server.name - server の user への表示名
- Preference: mail.server.server.admin_url - server のための URL の管理
- Preference: mail.server.server.using_subscription - boolean, 申し込みを使う必要がありますか? (LIST の代わりとして LSUB を使いなさい)
- Preference: mail.server.server.cleanup_inbox_on_exit - boolean, 終了するとき、inbox を clean up しますか?
- Preference: mail.server.server.dual_use_folders - boolean - 1つの folder は folder や message の両方を含みますか?
- Preference: mail.server.server.empty_trash_on_exit boolean, (imap に特化する必要はありません) - 終了するとき、この server の trash を空にする必要がありますか??
- Preference: mail.server.server.offline_download - boolean, この server は offline で download されるように mark されていますか?
- Preference: mail.server.server.override_namespaces - boolean, この server で namespace を override する必要がありますか?
- Preference: mail.server.server.max_cached_connections - integer, server へ open した connect の最大の数
- Preference: mail.server.server.empty_trash_threshhold integer, (imap に特化する必要はありません) 1つの folder を clean up する前のゴミ箱の disk space の最大 kB。
- Preference: mail.server.server.delete_model - integer, 削除model (ゴミ箱、へ移す、IMAP 削除する、直ちに clean up する、値は未定)
- Preference: mail.server.server.timeout - integer, 切断までの接続が idle 状態の間隔(分)
- Preference: mail.server.server.capability - この server の能力の list
- Preference: mail.server.server.namespace.public - public folder のこの server の namespace
- Preference: mail.server.server.namespace.personal - personal folders のための server の namespace
- Preference: mail.server.server.namespace.other_users - 別の user の folder の server の namespace
次は POP に特化しています:
- Preference: mail.server.server.leave_on_server - boolean, message を download し終った後に、server に message を残す必要がありますか?
- Preference: mail.server.server.delete_mail_left_on_server - boolean, local にある1つの message を削除するとき、server にあるその message を削除する必要がありますか?
- Preference: mail.server.server.newsrc.file - newsrc file の platform に特化した file path
次は news に特化しています:
Identities
またドキュメントの管理の言語は現在も英語です。この日本語訳は、
利用者の利便のためにmozilla.org 和訳プロジェクトによって提供されたものです。
フィードバックは英語で、元の著者に送って下さい。
翻訳された文書の一覧は、現在以下のURLで見ることが出来ます。
http://www.mozilla-japan.org/jp/td/index.html