【发布时间】:2020-12-27 22:41:53
【问题描述】:
我正在尝试制作一个脚本,该脚本必须将测试结果通过邮件正文邮寄给接收方。
在文件 A 中,我运行了一些将文本添加到 .txt 的代码,并以
结束logger.mail('Testresult ' + date)
这部分在名为 logger 的文件中调用以下代码部分:
def mail(subject):
note = open("logs/IguanaResult" + datum + ".txt", "r", encoding="utf-8")
print("logs/IguanaResult" + datum + ".txt")
message = note.read()
mailing.mail(message, subject)
note.close()
然后调用最后一部分代码,在一个名为 mailing 的文件中,它应该发送邮件:
def mail(message, subject):
date = date.today()
date = date.strftime("%d-%m-%Y")
# Open password
h = open("open password file", "r")
# Email, pass, and receiver
email = h.readline().split('\n')[0]
password = h.readline()
send_to_email = 'dedacted'
msg = MIMEMultipart()
msg['From'] = email
msg['To'] = send_to_email
msg['Subject'] = subject
try:
# Attach the message to the MIMEMultipart object
msg.attach(MIMEText(message, 'plain'))
print("content:" + message)
except Exception:
print("Could not attach message to MIME")
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(email, password)
text = msg.as_string() # You now need to convert the MIMEMultipart object to a string to send
server.sendmail(email, send_to_email, text)
server.quit()
电子邮件已发送,但它只有一个标题。没有尸体。
我希望 StackOverflow 可以帮助我,因为没有错误消息...
【问题讨论】:
-
bytes有一个方法decode可以转换为str;str有一个方法encode可以转换为bytes。也许您打算使用str而不是bytes? -
您将什么作为
message参数传递给mail函数? -
我在这里没有看到对
bytes的任何明确使用。我假设message是一个字符串。显式设置MIMEText编码怎么样,比如:MIMEText(message, 'plain', 'utf-8')? -
@mkrieger1:这是我尝试将
logs/IguanaResult" + date + ".txt的文件转换为电子邮件正文的部分 -
在这一行
note = open("logs/IguanaResult" + date + ".txt", "r")尝试将其更改为note = open("logs/IguanaResult" + date + ".txt", "r", encoding="utf-8")