web-dev-qa-db-fra.com

ActiveX - Le serveur d'automatisation ne peut pas créer d'objet

J'ai une page Web à partir de laquelle je dois envoyer un e-mail. J'ai besoin d'envoyer un GRAND e-mail depuis le navigateur. Étant donné que le contenu est plus volumineux que ne le permet la chaîne de requête, je dois compter sur Active X. Je souhaite envoyer cet e-mail via Outlook. Pour tenter de le faire, j'ai écrit le code suivant:

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);
}

Lorsque j'exécute ce code, j'obtiens l'erreur suivante:

ReferenceError: ActiveXObject is not defined 

Qu'est-ce que je fais mal?

Merci!

11
user70192

L'erreur "Automation Server Can't Create Object" signifie que les paramètres de sécurité de votre navigateur sont trop faibles pour que le contrôle ActiveX s'exécute. Vous devez déplacer votre page dans la liste des sites de confiance et réduire les paramètres ActiveX pour qu'elle puisse s'exécuter.

Personnellement, j'éviterais ActiveX comme la peste car il vous enferme dans le IE seulement monde. D'où la raison pour laquelle nous avons encore des gens coincés avec IE6.

Si vous essayez simplement de précharger un message électronique, vous pouvez utiliser mailto:

16
epascarello

a) Allez dans Outils -> Options Internet

b) Sélectionnez l'onglet de sécurité

c) Cliquez sur Sites de confiance (ou Intranet local selon que votre site est de confiance ou non)

d) Cliquez sur Niveau personnalisé

e) Assurez-vous que "Les contrôles d'initialisation et de script actifs x ne sont pas marqués comme sûrs pour les scripts" est activé - cela se trouve dans la section Contrôles Activex et plug-ins vers 1/4ème de la barre de défilement.

Cliquez sur OK, OK.

Une fois cette opération terminée, effacez les cookies du navigateur et le cache. Fermez toutes les sessions de votre navigateur. Rouvrez le IE pour lancer votre site.

Essayez de désactiver le paramètre à l'étape (e) pour voir si le problème réapparaît - cela devrait donner plus d'informations sur le problème.

Source: IE9, le serveur Automation ne peut pas créer d'erreur d'objet lors de l'utilisation de CertEnroll.dll

8
Thanga

Vous ne devriez pas pouvoir créer "Outlook.Application" à partir du navigateur. Cela peut être dû à plusieurs raisons:

  • Il n'est pas marqué comme sûr pour l'initialisation ou sûr pour les scripts
  • Il a le kill bit défini

Pouvez-vous utiliser un POST pour envoyer votre email au serveur?

2
Jimmy

L'objet ActiveXObject n'est disponible que sur Internet Explorer et peut faire l'objet de restrictions en fonction de la zone dans laquelle se trouve votre page (locale, intranet ou Internet).

Voulez-vous envoyer un e-mail à partir d'une page Web qui sera hébergée sur Internet? Ensuite, la seule option dont vous disposez, interdire un lien mailto, consiste à envoyer l'e-mail depuis le serveur. Comment faire cela dépend totalement de votre technologie côté serveur.

1
Martijn

make enable, Menu Outils -> Options Internet -> Sécurité -> Niveau personnalisé -> "Initialiser et script ActiveX sur IE

0
B_Rox