Я хочу ответить на конкретное сообщение, используя python и smtp.Я уже видел эти сообщения:
Ответ на электронную почту с использованием python 3.4
Как мне ответить на электронное письмо с использованием Python imaplib и включить оригиналсообщение?
Но, к сожалению, он отправляет ответ только с этим '--------- Переадресованным сообщением ----------' вместо ответа в обычномспособ.
Пожалуйста, помогите!
Код прилагается
def reply_to_msg(self, original_msg, reply_body):
# fetch msg
self.login_imap(host="imap.gmail.com", port=993, username='username@gmail.com', password="pass",
use_ssl=True)
# Filter by subject because it is unique subject (uuid)
# Get message ID
mail_ids = self.receive_mail_ids(subject_filter=original_msg["Subject"])
msg = MIMEMultipart("mixed")
body = MIMEMultipart("alternative")
text, _ = self.append_orig_text(reply_body, "", original_msg, True)
body.attach(MIMEText(text, 'plain'))
msg.attach(body)
msg.attach(MIMEMessage(original_msg))
msg["Message-ID"] = email.utils.make_msgid()
msg['To'] = original_msg["From"]
msg['Subject'] = "Re: " + original_msg["Subject"]
msg['In-Reply-To'] = msg['References'] = mail_ids[-1]
# send
try:
s = self.login_smtp(host="smtp.gmail.com", port=465, username='username@gmail.com', password="pass", use_ssl=True, use_auth=True)
self.smtp.sendmail(original_msg['To'], [original_msg["From"]], msg.as_string())
except Exception as error:
raise EmailManagerError("sendmail: {}".format(error))
@staticmethod
def append_orig_text(text, html, orig, google=False):
"""
Append each part of the orig message into 2 new variables
(html and text) and return them. Also, remove any
attachments. If google=True then the reply will be prefixed
with ">". The last is not tested with html messages...
"""
newhtml = ""
newtext = ""
for part in orig.walk():
if (part.get('Content-Disposition')
and part.get('Content-Disposition').startswith("attachment")):
part.set_type("text/plain")
part.set_payload("Attachment removed: %s (%s, %d bytes)"
% (part.get_filename(),
part.get_content_type(),
len(part.get_payload(decode=True))))
del part["Content-Disposition"]
del part["Content-Transfer-Encoding"]
if part.get_content_type().startswith("text/plain"):
newtext += "\n"
newtext += part.get_payload(decode=False)
if google:
newtext = newtext.replace("\n", "\n> ")
elif part.get_content_type().startswith("text/html"):
newhtml += "\n"
newhtml += part.get_payload(decode=True).decode("utf-8")
if google:
newhtml = newhtml.replace("\n", "\n> ")
if newhtml == "":
newhtml = newtext.replace('\n', '<br/>')
return (text + '\n\n' + newtext, html + '<br/>' + newhtml)