web-dev-qa-db-ja.com

ActiveX-オートメーションサーバーがオブジェクトを作成できません

メールを送信する必要があるWebページがあります。ブラウザから大きなメールを送信する必要があります。コンテンツがクエリ文字列で許可されているよりも大きいため、Active Xに依存する必要があります。この電子メールをOutlook経由で送信したいと考えています。これを行うために、次のコードを記述しました。

try {
  var to = "";
  var cc = "";
  var subject = "Action Required";
  var body = GenerateEmailBody();

  var Outlook = new ActiveXObject('Outlook.Application');
  var outlookNamespace = Outlook.GetNameSpace('MAPI');

  var message = outlookNamespace.CreateItem(0);
  message.Display();
  message.To = to;
  message.Subject = subject;
  message.Body = body;
  message.GetInspector.WindowState = 2;
} catch (err) {
  alert("Unable to send email. " + err);
}

このコードを実行すると、次のエラーが発生します。

ReferenceError: ActiveXObject is not defined 

何が悪いのですか?

ありがとう!

11
user70192

エラー「オートメーションサーバーはオブジェクトを作成できません」は、ブラウザーのセキュリティ設定が低すぎてActiveXコントロールを実行できないことを意味します。ページを信頼済みサイトリストに移動し、ActiveX設定を下げて実行できるようにする必要があります。

個人的にはIEだけの世界に閉じ込められているため、ペストのようなActiveXは避けます。それでも、なぜIE6に行き詰まっているのでしょうか。

メールメッセージをプリロードするだけの場合は、 mailto: を使用できます。

16
epascarello

a)「ツール」->「インターネットオプション」に移動します。

b)セキュリティタブを選択します

c)信頼済みサイト(または、サイトが信頼されているかどうかに応じて、ローカルイントラネット)をクリックします。

d)カスタムレベルをクリックします

e)[Activexコントロールの初期化とスクリプトを実行しても安全とマークされていない]が有効になっていることを確認します。これは、Activexコントロールとプラグインセクションの下にあり、スクロールバーの1/4に向かっています。

OK、OKをクリックします。

これが完了したら、ブラウザのCookieとキャッシュをクリアします。すべてのブラウザセッションを閉じます。 IEを再度開いて、サイトを起動します。

手順(e)の設定を無効にして、問題が再発するかどうかを確認します。これにより、問題の詳細がわかります。

ソース: IE9、オートメーションサーバーはCertEnroll.dllの使用中にオブジェクトエラーを作成できません

8
Thanga

ブラウザ内から「Outlook.Application」を作成することはできません。これにはいくつかの理由が考えられます。

  • 初期化してもスクリプトでも安全でもない
  • キルビットが設定されています

POSTを使用してメールをサーバーに送信できますか?

2
Jimmy

ActiveXObject オブジェクトはInternet Explorerでのみ使用でき、ページがどのゾーンにあるか(ローカル、イントラネット、またはインターネット)によっては制限を受ける場合があります。

インターネットでホストされるWebページから電子メールを送信しますか?次に、mailto-linkを禁止する唯一のオプションは、サーバーから電子メールを送信することです。その方法は、サーバー側のテクノロジーに完全に依存しています。

1
Martijn

ツールメニュー->インターネットオプション->セキュリティ->カスタムレベル-> "IEでActiveXを初期化およびスクリプト化してください。

0
B_Rox