Imaplib пересылает почту из gmail с вложением (Python) - PullRequest
0 голосов
/ 30 августа 2018

Извините за мой английский. Мне нужно получить почту из gmail (эта почта может содержать вложения) и переслать эту почту с другого письма. Ниже мой код для пересылки почты:

            for email_id in reversed(items):
                status, data = self.imap.fetch(email_id, "(RFC822)")
                if status == 'OK':

                    if count == 2: // this message contains attachment
                        message = email.message_from_bytes(data[0][1])
                        message.replace_header("From", FROM_ADDR)
                        message.replace_header("To", TO_ADDR)

                        try:
                            smtp = smtplib.SMTP('smtp.gmail.com', 587)
                            smtp.starttls()
                            smtp.login(CLIENT_MAIL, CLIENT_PASSWORD)
                            smtp.sendmail(FROM_ADDR, TO_ADDR, message.as_string())
                            smtp.quit()
                            print("send mail")
                        except BaseException as e:
                            print(e)

                    count += 1

Этот код работает, если письмо содержит только текст (без вложений)

1 Ответ

0 голосов
/ 30 августа 2018

Каково ваше сообщение об ошибке?

Кроме того, если вы используете Python 3.2+, пробовали ли вы использовать smtp.send_message(message, FROM_ADDR, TO_ADDR) вместо smtp.sendmail()? Похоже, что он изо всех сил пытается сделать что-то более правильно, особенно в отношении кодировки символов в SMTP-соединении.

...