2

私が見たすべての例に名前空間のマイクロソフトのスキーマがある理由がわかりません。それはなんのためですか?マイクロソフトのサーバーを調べて、本当に何かを送信しているのでしょうか?

vbscript を使用して Exchange で CDO を使用する方法

私は自分のコードを投稿しますが、それとすべての例はすべて同じです:

objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing")= cdoSendUsingPort

Microsoft スキーマをそこに入れたくありません。Exchange または SMTP サーバーに送信したいだけです。ありがとう。

4

1 に答える 1

1

名前空間が存在するのは、オブジェクト内のプロパティを一意に識別するためです。

Microsoft CDO for Windows 2000 では、Uniform Resource Identifier (URI) を使用して、フィールド名とその意味定義を修飾またはスコープします。Fields コレクションを通じてアクセスされる各フィールドは、ネームスペース プレフィックスとローカル名で構成されます。名前空間プレフィックスは、プロパティのセマンティック定義を修飾またはスコープするために使用される URI 参照です。たとえば、メッセージの件名フィールドには 2 つの表現があります。1 つは RFC 1522 で定義されたメカニズムを使用してエンコードされた非 US-ASCII 文字を含むもので、もう 1 つはこれらの文字がネイティブの UNICODE 文字にデコードされるものです。名前空間を使用することで、メッセージの「件名」が要求されたときに、どのセマンティック定義が意図されているかを識別できます。この場合、urn:schemas:mailheader 内で定義された件名フィールド:

MSDN の記事 Fieldsから。

XML Namespacesや、C#などの言語の名前空間とほぼ同じプリンシパルです。

彼らは実際には Microsoft にまったく接続していません。実際、ブラウザに URL を入力してみると、404 エラーが発生します。

これは、 Exchange サーバーに接続するために設定する必要があるプロパティを設定するためのかなり洗練されていない構文です。

たとえば、メールを送信するためにコードが接続するサーバーを設定するには、プロパティを設定しますsmtpserver。内部的に、このプロパティに到達するために、アセンブリはこれを URI にマップしますhttp://schemas.microsoft.com/cdo/configuration/smtpserver

メールを送信するための AC# コンポーネントは、設定を要求する場合がありますSmtpMail.Server。ただし、SmtpMail を作成するには、名前空間を調べる必要があったことを思い出してください。System.Web.Mailそのため、プロパティへの完全修飾パスはSystem.Web.Mail.SmtpMail.ServerHere です。ただし、言語ははるかに洗練されています。using ステートメントを使用すると、作成のコンテキストに入ることができます。これにより、タイピングの量が減ります。本当にやりたい場合は、C# で次のようにできることを思い出してください。

System.Web.Mail.SmtpServer mailServer = new System.Web.Mail.SmtpServer();

どちらがより冗長です。

私の意見では、URI 構文は扱いにくいですが、当時は、同じ名前を持つものを一意に区別するという問題に対する提案された解決策であり、別の意味を持つ可能性がありました。使った人もいました。多くの人はしませんでした。このコードは 10 年以上前のものです。

于 2012-07-19T20:32:29.173 に答える