【发布时间】:2021-06-24 06:05:43
【问题描述】:
我对这个程序的目标是向多个电子邮件地址发送消息以及附加到电子邮件的 PDF 文件。我该怎么做?我有两个 Traceback 调用(显示在代码之后)。到目前为止,当没有发送附件时代码可以工作,但是当我尝试发送附件时,一切似乎都崩溃了。谢谢
编辑:我相信我必须在某处使用这两行代码。
message.attach(部分)
text = message.as_string()
虽然当我把它们写下来时,它说类“str”的未解析属性引用“附加”
from email.mime.base import MIMEBase
import pandas as pd
import smtplib, ssl
subject = "An email with attachment from Python"
sender_email = input("Enter your E-mail Address: ")
password = input("Enter your password: ")
email_list = pd.read_excel("D:\Learning Python\Mini_Projects\emailaddresses.xlsx", engine="openpyxl")
# Read Excel Spreadsheet
names = email_list['Name']
receiver_email = email_list['Email']
message = """Subject: Training Program! ????
Hi {names}, I hope you received this e-mail with the attachment"""
filename = "TrainingProgram.pdf"
with open(filename, "rb") as attachment:
part = MIMEBase("application", "octet-stream")
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header(
"Content-Disposition",
f"attachment; filename= {filename}",
)
context = ssl.create_default_context()
with smtplib.SMTP("smtp.gmail.com", 587) as server:
server.starttls(context=context)
server.login(sender_email, password)
for i in range(len(receiver_email)):
name = names[i]
email = receiver_email[i]
server.sendmail(sender_email, receiver_email, message)
print("E-mails Sent!")
File "D:/Learning Python/Mini_Projects/main.py", line 117, in <module>
server.sendmail(sender_email, [email], message)
File "C:\Users\janss\AppData\Local\Programs\Python\Python38\lib\smtplib.py", line 859, in sendmail
msg = _fix_eols(msg).encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character '\U0001f4aa' in position 27: ordinal not in range(128)
【问题讨论】:
标签: python-3.x email-attachments