Мне нужно отправить письмо из папки входящих сообщений a@example.com
на b@example.org
. Можно ли отправить полезные данные без декодирования и кодирования при создании нового электронного письма? Будь то текст, HTML или вложения. Вам просто нужно отправить оригинальное письмо из другого почтового ящика без пересылки уведомлений.
mail = imaplib.IMAP4_SSL(server)
mail.login(login, password)
mail.list()
mail.select("inbox")
result, data = mail.search(None, "UNSEEN")
if result == 'OK':
for num in data[0].split():
result, data = mail.fetch(num, "(RFC822)")
raw_email = data[0][1]
try:
oldmsg = email.message_from_string(raw_email)
except TypeError:
oldmsg = email.message_from_bytes(raw_email)
newmsg = email.mime.multipart.MIMEMultipart(boundary="----")
newmsg['Subject'] = decode_mime_words(oldmsg['Subject'])
newmsg['From'] = login
newmsg['Date'] = strftime("%a, %d %b %Y %H:%M:%S %z")
newmsg['User-Agent'] = "Roundcube Webmail"
newmsg['To'] = to
#part = MIMEBase('application', 'octet-stream')
if oldmsg.is_multipart():
for oldpayload in oldmsg.get_payload():
print(oldpayload.get_payload())
print("-_________________-")
else:
print(oldmsg.get_payload())
# get attachments
for part in oldmsg.walk():
if part.get_content_maintype() == 'multipart':
continue
if part.get('Content-Disposition') is None:
continue
fileName = part.get_filename()
if (fileName[:11] == '=?koi8-r?B?') or (fileName[:11] == '=?KOI8-R?B?'):
fileName = base64.b64decode(fileName[11:]).decode(
'KOI8-R')
elif (fileName[:10] == '=?utf-8?B?') or (fileName[:10] == '=?UTF-8?B?'):
fileName = base64.b64decode(fileName[10:])
fileName = fileName.decode('utf-8')
# name attachemnts
if bool(fileName):
filePath = os.path.join('attach', fileName)
if not os.path.isfile(filePath):
fp = open(filePath, 'wb')
fp.write(part.get_payload(decode=True))
part = MIMEApplication(open(filePath, 'rb').read())
part.add_header('Content-Disposition', 'attachment', filename=fileName)
newmsg.attach(part)
fp.close()