Imap:获取电子邮件 -> 转发电子邮件

时间:2021-05-28 14:09:27

标签: python smtp imap

我正在尝试获取最新收到的电子邮件(成功完成)并将其转发到其他地址。

我不想像普通电子邮件一样使用:smtp.sendmail(FROM_ADDRESS, TO_ADDRESS, msg.as_bytes())

我希望转发它。

到目前为止我注意到的正常发送和转发之间的区别是:

源电子邮件(正常发送):

Content-Type: text/plain; charset="UTF-8"


Body of email

源电子邮件(转发发送):

Content-Type: text/plain; charset="UTF-8"

---------- Forwarded message ---------
From: Ha <ha@gmail.com>
Date: Fri, May 28, 2021 at 2:28 PM
Subject: Hello forward
To:


Body of email

这是我到目前为止所做的:一个脚本,用于获取我的收件箱中收到的最新电子邮件

import imaplib
import email
import time

IMAP_HOST = "imap.gmail.com"
SMTP_PORT = 587

USERNAME = "myemail@gmail.com"
PASSWORD = "mypwd"
SEARCH_CRITERIA = "ALL"

FROM_ADDRESS = "myemail@gmail.com"
TO_ADDRESS = "To@gmail.com"

FORWARD_TIME_DELAY = 5
EXCEPTION_TIME_DELAY = 60
VERBOSE = True



# Open IMAP connection
imap_client = imaplib.IMAP4_SSL(IMAP_HOST)
imap_client.login(USERNAME, PASSWORD)

# Fetch messages' ID list
status, _ = imap_client.select("INBOX", readonly=True)
if status != "OK":
    raise Exception("Could not select connect to INBOX.")

status, data = imap_client.search(None, SEARCH_CRITERIA)
if status != "OK":
    raise Exception("Could not search for emails.")

messages_id_list = data[0].decode("utf-8").split(' ')
messages_id_list = messages_id_list[0]      # edited
if VERBOSE:
    print("{} messages were found. Forwarding will start immediately.".format(len(messages_id_list)))
    print("Messages ids: {}".format(messages_id_list))
    print()

# Fetch each message data
messages_sent = []
while len(messages_sent) < len(messages_id_list):
    msg_id = messages_id_list[len(messages_sent)]

    status, msg_data = imap_client.fetch(msg_id, '(RFC822)')
    if status != "OK":
        raise Exception("Could not fetch email with id {}".format(msg_id))

0 个答案:

没有答案