مشكلة في إنشاء بريد إلكتروني مع مرفق في جافا سكريبت

StackOverflow https://stackoverflow.com/questions/553416

  •  23-08-2019
  •  | 
  •  

سؤال

أقوم بإنشاء رسالة بريد إلكتروني، عن طريق استدعاء الرمز أدناه، وإضافة مرفق إليه.

أريد أن يكون المستخدم قادرا على الكتابة في المتراكم، وتعديل محتويات الرسالة، لذلك أنا لا أرسله على الفور.

لماذا أحصل على رتبة عشر الوقت الثاني من الوقت يتم استدعاء الطريقة؟
(أول مرة يعمل بشكل صحيح.)

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

الخطأ يحدث في خط mats.add. لذلك عندما يحاول إرفاق المستند، فشل ذلك.

أيضا اسم الملف (p_file) هو عنوان http إلى صورة.

لا يوجد حل صحيح

نصائح أخرى

لن تعمل خارج IE، يحتاج المستخدم إلى Outlook على الجهاز وحساب تم تكوينه عليه. هل أنت متأكد أنك تريد إرسال بريد إلكتروني بهذه الطريقة؟

أحاول ذلك مع هذا المقتطف الصغير، وهو يعمل بلا عيوب:

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

لاحظ أنني تركت جميع الحجج الاختيارية Attachments.Add(). وبعد طريقة الإعدادات الافتراضية لإضافة المرفقات في النهاية، وهذا ما يبدو أنه تريده على أي حال.

هل يمكنك تجربة هذا القصاص المستقل؟ إذا كان يعمل من أجلك، يرجى إجراء تخفيض خطوة بخطوة في التعليمات البرمجية الخاصة بك نحو هذا الحد الأدنى المطلق، وسوف تجد ما يسبب الخطأ.

أولا do mitm.display () ثم اكتب mitm.getinspector.windowstate = 2؛ هذا سيفي بالغرض

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top