IMAP:كيفية نقل رسالة من مجلد واحد إلى آخر

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

  •  02-07-2019
  •  | 
  •  

سؤال

(باستخدام IMAP الأوامر ، وليس مع المساعدة من أي بريد آخر حزمة)

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

المحلول

لست متأكدا كيف دراية جيدة أنت في imap الكلام, لكن في الأساس بعد تسجيل الدخول, "حدد" علبة البريد المصدر, "نسخ" الرسائل, و "محو" الرسائل (أو "حذف" القديمة علبة البريد إذا كان فارغا الآن :-).

a login a s
b select source
c copy 1 othermbox
d store 1 +flags (\Deleted)
e expunge

من شأنه أن يكون مثالا الرسائل لإرسال.(ملاحظة:imap الرسائل تتطلب متالقه بادئة قبل كل أمر ، وهكذا "أ ب ج" في الجبهة)

انظر RFC 2060 للحصول على التفاصيل.

نصائح أخرى

هناك العديد من الطرق للقيام بذلك.أفضل واحد هو UID MOVE الأوامر المحددة في RFC 6851 من أوائل عام 2013:

C: a UID MOVE 42:69 foo
S: * OK [COPYUID 432432 42:69 1202:1229]
S: * 22 EXPUNGE
S: (more expunges)
S: a OK Done

وجود هذا التمديد هو مبين من قبل MOVE القدرة.

إذا لم يكن متوفرا ، ولكن UIDPLUS (RFC 4315) هو ثاني أفضل خيار هو استخدام مزيج من UID STORE, UID COPY و UID EXPUNGE:

C: a01 UID COPY 42:69 foo
S: a01 OK [COPYUID 432432 42:69 1202:1229] Copied
C: a02 UID STORE 42:69 +FLAGS.SILENT (\Deleted)
S: a02 OK Stored
C: a03 UID EXPUNGE 42:69
S: * 10 EXPUNGE
S: * 10 EXPUNGE
S: * 10 EXPUNGE
S: a03 Expunged

إذا كان UIDPLUS مفقود, لا يوجد شيء معقول أنك يمكن أن نفعل ... EXPUNGE القيادة بشكل دائم يزيل جميع الرسائل التي تم وضع علامة عليها للحذف ، بما في ذلك تلك التي لم تلمسها.أفضل هذا هو مجرد استخدام UID COPY و UID STORE في تلك الحالة.

إذا كان لديك uid البريد الإلكتروني والتي سوف يتم نقل.

import imaplib

obj = imaplib.IMAP4_SSL('imap.gmail.com', 993)
obj.login('username', 'password')
obj.select(src_folder_name)
apply_lbl_msg = obj.uid('COPY', msg_uid, desti_folder_name)
if apply_lbl_msg[0] == 'OK':
    mov, data = obj.uid('STORE', msg_uid , '+FLAGS', '(\Deleted)')
    obj.expunge()

حيث msg_uid هو uid البريد.

أعتقد أنك نسخ الرسالة إلى مجلد جديد ثم قم بحذف (محو) في القديم.

RFC3501

تلميح لا يوجد حذف الأمر أن يفعل ما يجب أن العلم الرسالة كما حذف ثم إزالة علبة البريد.إلقاء نظرة على RFC.كن حذرا مع حذف كما حذف كل علب البريد غير واحد من الرسائل.

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