Python - 转发带附件的IMAP邮件 (imaplib, smtplib)

3 投票
2 回答
4668 浏览
提问于 2025-04-16 15:14

我在转发带附件的邮件时遇到了问题。有没有人能给我一些建议?我猜可能是在Fetch语句那里,但我不太确定。

import sys
import uuid
import re
import smtplib
import email

address = ''
username = ''
password = ''

def checkMail():
    M = imaplib.IMAP4_SSL(address)
    M.login(username, password)
    M.select("INBOX", readonly=True)
    typ, data = M.search(None, 'Unseen')

    messageCount = len(data[0].split())    
    print('messageCount: %', messageCount)
    if messageCount > 0:     
        for num in data[0].split():
            typ, data = M.fetch(num, '(BODY[TEXT])')
            foundAt = data[0][1].find('Content-Type: application')
            if(foundAt > 0):
                print('attachmentfound')
                sendMail(data[0][1])


    M.close()
    M.logout()       


def sendMail(raw_message):

    toAddress = ''
    fromAddress = ''
    LOGIN    = ''
    PASSWORD = ''


    server = smtplib.SMTP('', 587)
    server.set_debuglevel(1)
    server.ehlo()
    server.starttls()
    server.login(LOGIN, PASSWORD)
    server.sendmail(fromAddress, toAddress, raw_message)
    server.quit()

def main():
    checkMail()

main()

2 个回答

0

是那个fetch... 加上一个fetch来处理(BODY[])就解决了问题。

0

如果你想使用imaplib,为什么不直接获取整个邮件内容(RFC822格式)呢?可以参考这个类似的问题:

如何使用imaplib在Python中获取邮件正文?

撰写回答