Question

Je suis initiant un email, en appelant le code ci-dessous, et en ajoutant une pièce jointe.

Je veux que l'utilisateur puisse entrer dans le receipient et modifier le contenu du message, donc je ne suis pas l'envoyer immédiatement.

Pourquoi dois-je obtenir un RangeError la 2ème fois que la méthode est appelée
(La première fois que cela fonctionne correctement.)

function NewMailItem(p_recipient, p_subject, p_body, p_file, p_attachmentname)
{
   try 
   {
     var objO = new ActiveXObject('Outlook.Application');
     var objNS = objO.GetNameSpace('MAPI');
     var mItm = objO.CreateItem(0);
     mItm.Display();
     if (p_recipient.length > 0) 
     {
       mItm.To = p_recipient;
     }
     mItm.Subject = p_subject;
     if (p_file.length > 0) 
     {
      var mAts = mItm.Attachments;
      mAts.add(p_file, 1, p_body.length + 1, p_attachmentname);
     }
     mItm.Body = p_body;
     mItm.GetInspector.WindowState = 2;
   } catch(e) 
   { 
     alert('unable to create new mail item'); 
   } 
}

L'erreur est INTERVENUES sur la ligne mAts.add. Alors, quand il essaie de joindre le document, il échoue.

De plus, le nom du fichier (p_file) est une adresse http à une image.

Pas de solution correcte

Autres conseils

Ne fonctionne pas en dehors de IE, l'utilisateur doit avoir Outlook sur la machine et un compte configuré sur elle. Etes-vous sûr de vouloir envoyer un e-mail de cette façon?

Je suis en train avec ce petit bout, et il fonctionne parfaitement:

var objO = new ActiveXObject('Outlook.Application');
var mItm = objO.CreateItem(0);

var mAts   = mItm.Attachments;
var p_file = [
  "http://stackoverflow.com/content/img/vote-arrow-up.png",
  "http://stackoverflow.com/content/img/vote-arrow-down.png"
];
for (var i = 0; i < p_file.length; i++) {
  mAts.add(p_file[i]);
}

Notez que je suis parti de tous les arguments optionnels Attachments.Add(). Les valeurs par défaut de méthode pour ajouter des pièces jointes à la fin, ce qui est ce que vous semblez vouloir de toute façon.

Pouvez-vous essayer ce bout autonome? Si cela fonctionne pour vous, s'il vous plaît faire une réduction étape par étape de votre code vers ce minimum absolu, et vous trouverez ce qui provoque l'erreur.

d'abord faire mItm.display () puis écrire mItm.GetInspector.WindowState = 2; cela fonctionnera

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top