المعالجة الآلية البريد الإلكتروني في جافا

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

  •  09-06-2019
  •  | 
  •  

سؤال

فقط حصلت على طلب من رئيسي لتطبيق أنا أعمل على.نحن في الأساس الحصول على عنوان البريد الإلكتروني إعداد خارجي العميل أن يقدم excel الملفات.

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

أي معلومات حتى من أين تبدأ المفيد.\

ملاحظة:نحن باستخدام lotus notes خادم للقيام بذلك ، ولكن عامة الطريقة سيكون أكثر فائدة (إن أمكن).

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

المحلول

البريد الإلكتروني -> mailserver ->[شيئا] -> الملف على القرص.

ملف على القرص من السهل جدا تحليل استخدام JavaMail.

من [شيء] يمكن أن يكون:

نصائح أخرى

تحرير: منذ أن كتبت هذا الجواب ، حكمة انتقلت الآن يدعي أن يكون إلا أداة اختبار وحدة, حتى تأخذ الإجابة أدناه مع قليل من الملح...


Svrist الجواب هو جيد ، ولكن إذا كنت ترغب في تجنب الأوسط خطوة (على mailserver أن يكتب البريد الإلكتروني إلى القرص في وقت لاحق بيك اب من قبل نظام جافا) يمكنك استخدام حكمة.

حكمة يتيح لك البدء في جافا mailserver:

Wiser wiser = new Wiser();
wiser.setPort(2500);
wiser.start();

ثم يمكنك مجرد استطلاع بشكل دوري عن طريق البريد الإلكتروني:

for (WiserMessage message : wiser.getMessages())
{
    String envelopeSender = message.getEnvelopeSender();
    String envelopeReceiver = message.getEnvelopeReceiver();

    MimeMessage mess = message.getMimeMessage();

    // mail processing goes here
}

استخدام البريد الإلكتروني في قاعدة بيانات (Domino administrator يمكن وضع لك لكنه في ملف المساعدة كذلك).

في قاعدة البيانات ، يمكنك إنشاء عامل يعمل بشكل دوري لمعالجة كافة المستندات الجديدة.أن العميل سوف تستخدم EmbeddedObjects ممتلكات NotesRichTextItem فئة ExtractFile طريقة NotesEmbeddedObject الطبقة الحصول على التعامل مع ملف مرفق واستخراج إلى الموقع الذي تحدده.

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

Dim doc As NotesDocument
Dim rtitem As Variant
'...set value of doc...
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
  Forall o In rtitem.EmbeddedObjects
    If ( o.Type = EMBED_ATTACHMENT ) Then
      Call o.ExtractFile( "c:\samples\" & o.Source )
      Call o.Remove
      Call doc.Save( False, True )
    End If
  End Forall
End If

لقد فعلت قليلا جدا في الآونة الأخيرة مع جافا وكلاء على Domino.Domino 8.5 خادم يدعم جافا 6 و جزءا لا يتجزأ لذلك لن تأخذ شخص مع القليل من الدومينو تجربة التنمية طويلة لوضع معا عامل يعمل عند وصول بريد جديد.في LotusScript حتى أسهل ولكن يحتاج إلى المزيد من المهارات المتخصصة التي ربما كنت بحاجة للحصول على المقاول في تقديم.

الحد الخاص بك من المحتمل أن تواجه مخاوف استخراج الملف, يمكنك بسهولة وضعه على وحدة خدمة Domino ملف هيكل ولكن قد تكون محدودة من قبل نظام التشغيل الأمن من وضعها على خادم آخر.

Lotus Notes/Domino مخازن البريد في قاعدة بيانات الملاحظات.هناك واجهات برمجة التطبيقات المتاحة من أجل الحصول على الوثائق (البريد الإلكتروني), قراءة قيم حقل (من الموضوع), و فصل الملفات.

واجهات برمجة التطبيقات تشمل

-LotusScript (VB البديل المتاحة في قاعدة بيانات الملاحظات)

-جافا (من داخل أو خارج قاعدة البيانات)

-C API (خارجي)

-نفس API المتاحة من خلال ملقم COM

يمكنك إنشاء "المقرر الوكيل" داخل قاعدة البيانات (باستخدام LotusScript أو جافا) أنه يمكن تحديد موقع المستندات التي تم إنشاؤها منذ آخر مرة ركض موقع المرفقات و استخراج لهم.وكيل وسوف تحتاج إلى أن وقعت مع معرف لديه الأذونات المناسبة على الخادم ، بما في ذلك تلك المطلوبة الكتابة إلى ملف النظام و بدء أي عمليات أخرى.

الخارجية إلى قاعدة البيانات ، يمكنك استخدام أي API إلا LotusScript إلى تسجيل الدخول إلى ملقم البريد الإلكتروني/البريد قاعدة البيانات و متابعة عملية مماثلة ، على سبيل المثالاستخراج الملفات محليا على عميل أو ملقم منفصل.ج API COM تتطلب ملاحظات تثبيت عميل ، ولكن تطبيقات جافا يمكن تعيين ما يصل إلى تشغيل عبر كوربا/DIIOP دون تثبيت كامل.

استشارة Domino Designer مساعدة (أو IBM موقع C API) لمزيد من المعلومات.

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

يمكنك الوصول إلى الملاحظات الوثائق بسهولة نسبيا باستخدام DIIOP سيكون أسهل بكثير من الذهاب إلى أسفل C Api الطريق...

محاولة POP3Client في صافي العموم حزمة;انها سوف تسمح الخاص بك برنامج جافا التحقق من وجود بريد جديد على حساب معين في أي الفاصل الزمني الذي تريد (كل بضع دقائق ؟ كل ساعة؟), والحصول على/حذف الرسائل كما تريد.

SMTP/POP3 يمكن تمكين على وحدة خدمة Domino.عملت مع هذا من قبل و حصلت السنجاب البريد يعمل معها.SMTP قليلا الموارد المكثفة ، ولكن جيدا يستحق كل هذا الجهد لأن ثم لا يجب أن ينزل إلى LotusLand للحصول على الأشياء تعمل.مجرد كتابة Java الصغيرة CLI البرنامج الذي سوف تحقق معين صندوق البريد الإلكتروني (POP3 أو SMTP) ، تحليل من خلال الرسائل سحب المرفقات ووضعها عند الحاجة.

الكثير من الوثائق و الأمثلة هنا:http://java.sun.com/products/javamail/

التقنيات التي يمكنك تطوير اتخاذ هذا النهج سوف تكون أكثر للتطبيق على نطاق واسع في المستقبل الوظيفي الخاص بك من أي شيء لوتس/Domino محددة.

بغض النظر عن ما تفعله, سوف تحتاج فهم Lotus Notes هياكل البيانات.والخبر السار هو أن مؤتمتة بالكامل الحل يمكن أن يبنى في الملاحظات بسهولة جدا.

أفضل رهان هو أن يكون بنيت داخل الملاحظات ، فإنه يمكن تعيين ما يصل إلى تشغيل تلقائيا كلما استلام بريد جديد.جاري الإجابة ، ولكن من دون أي خبرة ، فإنه ربما يكون من الصعب معرفة كيفية تنفيذ ذلك بنفسك.من ناحية أخرى, انها حقا يجب أن لا تأخذ أي المختصة الملاحظات مبرمج أكثر من ساعة أو ساعتين على إعداده.

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