سؤال

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

والانتقال / نسخها إلى "البريد المرسل" لا إرساله، مجرد نقله إلى هذا المجلد.

وكيف يمكنني إرسال مشروع مباشرة دون جلب كل محتوى والمرفقات من العميل؟ هل هناك أي أمر IMAP للقيام بذلك؟

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

المحلول

وIMAP هو بروتوكول صندوق البريد. فإنه لا (أصلا) دعم إرسال البريد، فقط الوصول إليه. من أجل إرسال البريد لك <م> يجب استخدام SMTP. من الممكن أن يكون هناك تمديد IMAP لإرسال البريد الإلكتروني، ومن الممكن أن بريد جوجل تدعم هذا التمديد، لكني أشك في ذلك. وبالتالي، إذا كنت ترغب في إرسال البريد الإلكتروني مع المرفقات، يجب أن يكون في الواقع المحتوى الكامل للرسالة المتاحة لك لإرسال.

نصائح أخرى

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

الساعي-IMAP على إرسال البريد عبر اتصال IMAP . ملاحظة أن هذا هو أسلوب غير القياسية وأنا لست على علم بأي الملقم الآخر الذي يدعم هذا.

RFC 4468 التي تمتد SMTP حتى تتمكن من جلب المحتوى الإلكتروني من خادم IMAP ، ولكن أنا لا أعرف عن أي عمل وتنفيذ المستخدمة على نطاق واسع.

والحديث عن جوجل: الخلاف مع SMTP هو على الارجح الطريق الأسلم للذهاب

.

وبالمناسبة، الآن أن أي عميل البريد الحديثة (بما في ذلك تلك webbased) يدعم <م> المرسلة المجلد، عليك typicaly استخدام كل من SMTP و IMAP لإرسال بريد الكتروني واحد. وهناك حالة تعارض بين إرسال البريد الإلكتروني عبر SMTP و <م> بنجاح توفير البريد الإلكتروني للIMAP <م> المرسلة المجلد. باستخدام IMAP لإرسال البريد الإلكتروني هو وسيلة لتجنب هذا الشرط السباق.

وإرسال البريد الإلكتروني هو ميزة خاصة من بعض خوادم IMAP. لا شيء في بروتوكول IMAP. كنت مجرد نسخ البريد الإلكتروني الخاص بك إلى دليل IMAP خاص على الخادم ويرسل لهم. أشك في أن جوجل يدعم هذه.

وأنا أرسلت بريد إلكتروني إلى عنوان بريدي الإلكتروني الخاص باستخدام IMAP باستخدام بيثون 3 إلى حساب بريد جوجل. ما هو يفعله هو إلحاق رسالة إلى علبة بريد. تحتاج إلى استخدام عدد قليل من المكتبات المحلية بايثون. أيضا دراسة هذا <وأ href = "HTTP: // تحميل٪ 20Messages٪ C2٪ B6٪ 20٪ 20To٪ 20add٪ 20A٪ 20new٪ 20message٪ 20to٪ 20A٪ 20mailbox،٪ 20construct٪ 20A٪ 20Message٪ 20instance٪ 20and٪ 20pass ٪ 20it٪ 20to٪ 20the٪ 20append ()٪ 20method،٪ 20along٪ 20with٪ 20the٪ 20timestamp٪ 20for٪ 20the٪ 20message ". يختلط = "نوفولو"> ثائق imaplib ، و هي واردة هذا الرمز في القسم على تحميل الرسائل: لإضافة رسالة جديدة إلى علبة بريد، بناء مثيل رسالة وتمريرها إلى إلحاق () طريقة، جنبا إلى جنب مع الطابع الزمني للرسالة.

وثم تحقق صندوق بريد Gmail وسترى الرسالة الجديدة.

import imaplib
import time
import email.message
import imaplib_connect

new_message = email.message.Message()
new_message.set_unixfrom('name')
new_message['Subject'] = 'Test'
new_message['From'] = 'name@gmail.com'
new_message['To'] = 'name@gmail.com'
new_message.set_payload('This is an example message body.\n')

print(new_message)

with imaplib_connect.open_connection() as c:
    c.append('INBOX', '',
             imaplib.Time2Internaldate(time.time()),
             str(new_message).encode('utf-8'))

# Show the headers for all messages in the mailbox
c.select('INBOX')
typ, [msg_ids] = c.search(None, 'ALL')
for num in msg_ids.split():
    typ, msg_data = c.fetch(num, '(BODY.PEEK[HEADER])')
    for response_part in msg_data:
        if isinstance(response_part, tuple):
            print('\n{}:'.format(num))
            print(response_part[1])
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top