gpt4 book ai didi

python - 如何清除 MIMEBase 中的所有数据(电子邮件模块)

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:42 24 4
gpt4 key购买 nike

所以我有这个代码:

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
import os

def sendMail(to, subject, text, files=[],server="smtp.gmail.com:587"):
assert type(to)==list
assert type(files)==list
fro = "psaoflamand@live.com>"

msg = MIMEMultipart()
msg['From'] = fro
msg['To'] = COMMASPACE.join(to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject

msg.attach( MIMEText(text) )
a=0
username = 'psaoflamand@gmail.com'
password = 'pass'

# The actual mail send


smtp = smtplib.SMTP(server)
smtp.starttls()
smtp.login(username,password)

for file in files:
a+=1
print a
part = MIMEBase('application', "octet-stream")
part.set_payload( open(file,"rb").read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"'
% os.path.basename(file))
msg.attach(part)
if a==21:
smtp.sendmail(fro, to, msg.as_string() )
a=0
print 'sent'


smtp.quit()


sendMail(
["psaoflamand@live.com"],
"hello","cheers",
["Thousands of one megabyte files"]

在此代码中,它一次发送 21 个文件以避免超过 gmail 邮件的限制。但问题是 MIMEBase 中的数据仍然存在......我的问题是有没有办法删除 MIMEBase 中的所有数据?抱歉缩进错了

最佳答案

看起来你的问题是你:

  1. 创建一个消息
  2. 将 21 个文件附加到 msg
  3. 发送。
  4. 再附加 21 个文件,现在附加了 42 个文件。
  5. 再次发送;第二条消息是第一条消息的两倍。
  6. 再追加 21 个文件,使总数达到 63 个。
  7. 再次发送;它现在变得非常庞大。
  8. 等等。

a==21 时,您应该从一个新的 msg 对象开始,而不是继续向旧对象添加越来越多的文件。

或者,您可以尝试先删除已有的 21 个附件,然后再附加新附件;但重新开始可能更简单,因为您已经准备好代码以使用正确的 header 开始新消息 — 它只需要重构为一个小的“开始新消息”功能。

关于python - 如何清除 MIMEBase 中的所有数据(电子邮件模块),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7624841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com