不带附件的电子邮件发送 - Python 3.8


  1. 我想在 Python 中发送一个附加到邮件的.txt文件。 当前已收到邮件,但没有任何附件。
  2. 代码波纹管
  3. 我用PHP发送电子邮件,但Python对我来说是全新的
  4. 代码不返回任何错误,它只是不通过电子邮件发送附件
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为您生成消息对象结构,这也为您提供了FROMTO等。

msg 对象还有一堆可以在其文档中概述的函数

相关内容

  • 没有找到相关文章

最新更新