私はこの状況にあります:
- コードはVBScriptに含まれている必要があります(私の制御外)
- Outlook設定でプログラムによるアクセス制限を無効にできない(管理者ではなくグループポリシーであり、Windowsはインストールされている有効なウイルススキャナーを認識しません)
- 許可されていないため、SMTPを使用できません。
Outlookを使用して自動化された方法で電子メールを送信する方法はないと思いました(画面がロックされた状態でユーザーとしてログインした無人のボックスで)。私はさまざまなアプローチを試しましたが、常にセキュリティ警告メッセージが表示されていました。どうすればこれを修正できますか?
私はすでにこの役立つサイトですべてを試し、次のように各オプションを削除しました。
戦略
理想的には、Outlookを自動化するアプリケーションは、これらのセキュリティプロンプトをトリガーするコードを回避する必要があります。
これはまさに私がやったことです(以下の私の答えを参照)。そのため、そのページの他のすべてのオプションは無関係です。それらを1つずつ取り上げましょう。
メッセージの送信
目的が単に電子メールメッセージを作成して送信することである場合は、Outlookオブジェクトを使用する必要はまったくありません。Microsoftは、SMTPを使用してメッセージを作成および送信するためのCDOforWindowsライブラリを提供しています。このライブラリを使用すると、OutlookとMAPIが完全にバイパスされ、セキュリティプロンプトはトリガーされません。コードサンプルについては、...を参照してください。
SMTP。立ち入り禁止。ネットワークポリシーにより許可されていません。
セキュリティプロンプトをトリガーする可能性のあるすべてのコードには、Outlookオブジェクト、Simple MAPI、またはCDO1.21の代わりにExtendedMAPIを使用します。
拡張MAPIは機能する可能性がありますが、非常に面倒で冗長であり、多くのC / C ++コードが含まれ(この質問のトピックではありません。上記を参照)、ユーザーにパスワードの入力を求めずに使用することは不可能のようです。
セキュリティプロンプトをトリガーする可能性のあるすべてのコードには、サードパーティのライブラリ(RedemptionまたはMAPI33)を使用します。このアプローチは、学習曲線が急で、ほぼ同じくらい安全な拡張MAPIを使用するよりも簡単です。これらのライブラリは、Outlookコードプロジェクトを支援する追加機能も提供します。
サードパーティのライブラリの問題は4つあります。-コストがかかります。-無料であってもライセンスの問題が発生します(一部の組織では、ソフトウェアをエコシステムに導入する前に、弁護士による広範な審査が必要です)。-この問題全体が懸念されるほとんどの環境は、ユーザーがOutlookオプションでプログラムによるアクセス警告を無効にできない環境です。うーん、それらはどのような可能性がありますか?それは...企業環境かもしれません?企業環境でのソフトウェアの調達には非常に長い時間がかかり、ソフトウェアを使用することによるコスト削減が数百万ドルを超えない限り、実用的ではありません。しかし、ソフトウェアの調達が必要な場合、コスト削減ほど高くはないが、サードパーティのソフトウェアを調達するために、総節約よりも多くの費用と労力を要する、多くの実用的なプロセス改善を行うことができます。-ネットワーク管理者は、悪意のある目的で使用される可能性があるため、ソフトウェアがシステム上に存在することを信頼しない可能性があります。
アプリケーションとともに、セキュリティプロンプトを抑制するツールをデプロイします。
これは、OMGプロンプトの抑制が必要であることを前提としていますが、私の場合は、単純な電子メールを送信するだけではありません(私の回答を参照)。
Outlook 2007の場合、マシンが最新のウイルス対策アプリケーションを実行していることを確認し、CDO1.21およびSimpleMAPIコードを避けてOutlookオブジェクトを使用してすべてのコーディングを行います。
ウイルススキャナーは最新ですが、バージョンやベンダーを変更することは完全に私の制御不能であり、Outlookはそれを認識しません。「ウイルス対策の状態:無効です。このバージョンのWindowsはウイルス対策の検出をサポートしていますが、ウイルス対策が見つかりませんでした。」
Outlookカスタムフォームコード、Outlook VBAコード、およびCOMアドインでは、VBAまたはアドインアーキテクチャによって提供されるOutlook.Applicationオブジェクトからすべてのオブジェクトを派生させます。たとえば、以下のサンプルVBA「スクリプトの実行」ルール手順を参照してください。
興味深い、そしておそらく有用ですが、必須ではありません。これにより、ソフトウェアを展開するためにOutlookでルールを設定することに不必要な依存関係が生じ、展開が複雑になります。
特定のCOMアドインを「信頼」する、またはすべてのアプリケーションがアドレスへのアクセスなどの特定の機能に無制限にアクセスできるようにするOutlookセキュリティ設定を展開します。Outlook 2007より前のバージョンでは、これにはMicrosoftExchangeServerが必要です。Outlook 2007については、以下のバージョン固有の考慮事項に関するセクションを参照してください。
面倒:COMアドインをインストールするには、管理アクセスが必要であり、組織によっては管理アクセスを取得するのが難しい場合があります。
Exchangeが電子メールサーバーである企業環境では、サーバー上のデータへの直接アクセスは、Exchange2000以降のWebDAVAPIを介して、およびExchange2007以降のExchangeWebサービスを介して利用できます。
私の環境、そしておそらく他の環境では無効になっています。
企業環境では、管理者は一部またはすべてのユーザーのOutlookセキュリティを緩めることを選択できます。
もちろんですが、これにはネットワークチームとのコミュニケーション/調整/協力が必要です。COMアドインをインストールするための管理アクセスが利用できない場合は、グループポリシーを緩めるためにも利用できない可能性があります。