#python
#python
Вопрос:
Мой код выглядит следующим образом. Переменная «attachment» возвращает статическое имя файла для тестирования «excel/test.xlsx «
def send_email(snapshot_id, email):
logging.info("Sending_email for snapshot_id %d to user %s", snapshot_id, email)
attachment = get_attachment(snapshot_id, email)
logging.info("Sending attachment %s", attachment)
message = MIMEMultipart("alternative")
message["Subject"] = "multipart test"
message["From"] = sender
message["To"] = email
message['Date'] = formatdate(localtime=True)
# write the plain text part
text = """
This is an automated email from the ARIEL reporting database, detailing key changes to Regulatory Tracking data for products, markets and categories you have subscribed to.
"""
# write the HTML part
html = """
<html>
<body>
<p>Hi,<br>
Check out the changes!!</p>
<p> Feel free to <strong>let us</strong> know what content would be useful for you!</p>
</body>
</html>
"""
# convert both parts to MIMEText objects and add them to the MIMEMultipart message
part1 = MIMEText(text, "plain")
part2 = MIMEText(html, "html")
message.attach(part1)
message.attach(part2)
part3 = MIMEBase('application', "octet-stream")
part3.set_payload(open(attachment, "rb").read())
encoders.encode_base64(part3)
part3.add_header('Content-Disposition', 'attachment; filename="' attachment '"')
message.attach(part3)
# send your email
with smtplib.SMTP(smtp_server, port) as server:
server.sendmail(
sender, email, message.as_string()
)
Я получаю это сообщение об ошибке:
AttributeError: 'list' object has no attribute 'encode'
Exception occurred
Traceback (most recent call last):
File "C:/ariel_deltas/main.py", line 263, in <module>
send_emails(snapshot_id)
File "C:ariel_deltasemails.py", line 25, in send_emails
send_email(snapshot_id, emails)
File "C:ariel_deltasemails.py", line 73, in send_email
sender, email, message.as_string()
File "C:ProgramDataAnaconda3envsariellibemailmessage.py", line 158, in as_string
g.flatten(self, unixfrom=unixfrom)
File "C:ProgramDataAnaconda3envsariellibemailgenerator.py", line 116, in flatten
self._write(msg)
File "C:ProgramDataAnaconda3envsariellibemailgenerator.py", line 195, in _write
self._write_headers(msg)
File "C:ProgramDataAnaconda3envsariellibemailgenerator.py", line 222, in _write_headers
self.write(self.policy.fold(h, v))
File "C:ProgramDataAnaconda3envsariellibemail_policybase.py", line 326, in fold
return self._fold(name, value, sanitize=True)
File "C:ProgramDataAnaconda3envsariellibemail_policybase.py", line 369, in _fold
parts.append(h.encode(linesep=self.linesep, maxlinelen=maxlinelen))
Комментарии:
1. Просто предположение, но вы, возможно, устанавливаете значение заголовка ‘To’ в список вместо строки через
message["To"] = email
2. @JustinEzequiel Я отправлял электронные письма, а не электронную почту в функцию (т. Е. Список !!)
3. @JustinEzequiel добавьте это в качестве ответа, и я приму его, большое спасибо!!
Ответ №1:
Проверьте строку
message["To"] = email
Возможно, вы устанавливаете в To
заголовке список строк вместо строки.
Комментарии:
1. Я действительно отправлял список в функцию, спасибо