كيف يمكنني إرسال مرفق بريد إلكتروني باستخدام العميل المعين، برمجيًا من Java

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

  •  09-06-2019
  •  | 
  •  

سؤال

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

لقد تمكنت من استخدام رؤوس URI لإرسال تتبع مكدس باستخدام استدعاء JDIC الخاص بـ Java 6: Desktop.getDesktop().mail(java.net.URI).سيؤدي هذا إلى تشغيل برنامج البريد الخاص بالمستخدم، ليكون جاهزًا لإضافة تعليقاته، ثم الضغط على إرسال.

أحب تشغيل عميل البريد الإلكتروني، لأنه هو ما اعتاد عليه المستخدم، فهو يخبر الدعم كثيرًا عن المستخدم (العلامات، وتفاصيل الاتصال، وما إلى ذلك) ولا أريده حقًا للشحن مع بريد جافا.

ما أود فعله هو إرفاق ملف السجل وتتبع المكدس كملف، لذلك لا يوجد حد أقصى للطول، ويرى المستخدم بريدًا إلكترونيًا جميل المظهر ونظيفًا، ولدى قسم الدعم الكثير من المعلومات للعمل معها.

هل يمكنني القيام بذلك بالنهج الذي أتبعه؟او هل هناك طريقه افضل؟

يحرر:أنا في سياق OSGi، لذا سيكون تجميع JDIC ضروريًا.إذا كان ذلك ممكنًا، أود الشحن بأقل عدد ممكن من التبعيات، ولا يبدو تجميع JDIC لمنصات متعددة أمرًا ممتعًا، خاصة بالنسبة لمثل هذه الميزة الصغيرة.

قد يكون JavaMail مناسبًا، لكن هذا سيكون على أجهزة الكمبيوتر المكتبية لعملائنا من الشركات.ال الإعداد/اكتشاف التكوين يجب أن تكون شفافة وتلقائية وموثوقة.فيما يتعلق بـ JavaMail، يبدو أن التكوين يتم يدويًا فقط.هل هذا هو الحال؟

الإجابة التي تعجبني أكثر هي استخدام Desktop.open() لملف *.eml.للأسف يفتح Outlook Express (بدلاً من Outlook) ملفات eml.ليس لدي أي فكرة عما إذا كان هذا أمرًا معتادًا أو افتراضيًا لتكوين Windows لفتح ملفات EML مثل هذا.هل هذا معتاد؟أم أن هناك تنسيقًا نصيًا آخر أ) يسهل إنشاؤه، ب) يفتح افتراضيًا في نفس عميل البريد الإلكتروني الذي يستخدمه المستخدمون بالفعل؟

هل كانت مفيدة؟

المحلول

يمكنك حفظ ملف .eml مؤقت، وDesktop.getDesktop().open(emlFile)
يحرر: كما أشرت، سيؤدي هذا للأسف إلى فتح Outlook Express بدلاً من Outlook.
ومع ذلك، إذا كان Windows Live Mail مثبتًا لديك، فسوف يستخدم ذلك.

نصائح أخرى

إذا كنت تستخدم JDK 6 (ينبغي عليك ذلك بالفعل)، فإن Desktop API أصبحت الآن جزءًا من JRE.يرى http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/ للمزيد من المعلومات.

كطريقة مختلفة تمامًا للتعامل مع نفس المشكلة، نستخدم أداة تعقب الأخطاء مع واجهة XML-RPC، ويتحدث تطبيقنا (RCP أيضًا، راجع للشغل) عن ذلك باستخدام مربع حوار إرسال مخصص.وهذا يعني أنه يمكننا إرسال ملفات السجل للمساعدة في تشخيص المشكلة، دون أن يضطر المستخدم إلى العثور عليها.

أنا متأكد من أن معظم متتبعي الأخطاء لديهم شيء مثل هذا متاح.نحن نستخدم Jira، وهو يعمل بشكل رائع (على ما يبدو، لقد أطلقوا للتو إصدارًا شخصيًا مجانيًا يجعل من السهل تجربته).

باستخدام هذه الطريقة، يمكنك تعيين سطر الموضوع والنص الأساسي باستخدام URI مثل

mailto:me@here.com?SUBJECT=Support mail&BODY=This is a support mail

ومع ذلك، فإن طول الموضوع والنص الأساسي سيكون كذلك لديك بعض القيود

لا توجد طريقة يمكنني التفكير فيها لإرفاق ملف باستخدام هذه الطريقة أو شيء مشابه (بدون إضافة javamail إلى تطبيقك)

قد لا تكون JDIC متاحة دائمًا على النظام الأساسي للمستخدم الخاص بك.إحدى الطرق الجيدة للقيام بذلك هي استخدام واجهة برمجة تطبيقات javamail.يمكنك إرسال رسالة بريد إلكتروني متعددة الأجزاء كما هو موضح في هذا البرنامج التعليمي بواسطة SUN:

إرسال المرفقات

import java.awt.Desktop;
import java.io.File;
import java.net.URI;


public class TestMail {

    public static void main(String[] args) {
        try {       
         Runtime.getRuntime().exec(
                  new String[] {"rundll32", "url.dll,FileProtocolHandler",
                        "mailto:a@a.de?subject=someSubject&cc=a@a.de&bcc=a@a.de&body=someBodyText&Attach=c:\\test\\test.doc"}, null
                  );


        } catch (Exception e) {
            e.printStackTrace();
        }
    }

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