不带附件的电子邮件发送 - Python 3.8
Email sending without attachment - Python 3.8
- 我想发送一个 .txt 文件附加到 Python 的邮件中。
目前已收到邮件,但没有任何附件。
- 代码如下
- 我在 PHP 中发送过电子邮件,但 Python 对我来说是全新的
- 该代码 return 没有任何错误,它只是不随电子邮件发送附件
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}\n\n{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 对象还有一堆函数,您可以 运行 在其 docs
中概述
- 我想发送一个 .txt 文件附加到 Python 的邮件中。 目前已收到邮件,但没有任何附件。
- 代码如下
- 我在 PHP 中发送过电子邮件,但 Python 对我来说是全新的
- 该代码 return 没有任何错误,它只是不随电子邮件发送附件
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}\n\n{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 对象还有一堆函数,您可以 运行 在其 docs
中概述