- 我想在 Python 中发送一个附加到邮件的.txt文件。 当前已收到邮件,但没有任何附件。
- 代码波纹管
- 我用PHP发送电子邮件,但Python对我来说是全新的
- 代码不返回任何错误,它只是不通过电子邮件发送附件
with smtplib.SMTP('smtp.gmail.com', 587) as smtp:
server = smtplib.SMTP('smtp.gmail.com', 587)
smtp.ehlo()
smtp.starttls()
smtp.ehlo()
msg = MIMEMultipart()
smtp.login(EMAIL_ADRESS, EMAIL_PASSWORD)
subject = 'Log Register'
filename = 'logs-to-h4wtsh0wt.txt'
attachment = open(filename, 'rb')
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= "+filename)
msg.attach(part)
msg = f'Subject: {subject}nn{Body}'
smtp.sendmail(EMAIL_ADRESS,EMAIL_ADRESS, msg)
snakecharmerb是对的。您确实覆盖了消息对象,因此丢失了在该点之前添加的所有内容。
您可以改为按如下方式设置主题:
msg['Subject'] = "Subject of the Mail"
# string to store the body of the mail
body = "Body_of_the_mail"
# attach the body with the msg instance
msg.attach(MIMEText(body, 'plain'))
由于您要附加文件,因此在发送之前,您还需要将多部分消息转换为字符串:
text = msg.as_string()
smtp.sendmail(fromaddr, toaddr, text)
当您使用MIMEMultipart()
创建msg
时,它会根据RFC2822为您生成消息对象结构,这也为您提供了FROM
、TO
等。
msg 对象还有一堆可以在其文档中概述的函数