我正在嘗試將附件添加到下面創建并存盤為電子郵件的物件。這一切都在一個類中完成,這就是類的初始化方式:
class <name>:
def __init__(self, **kwargs):
self.msg = kwargs.get("msg", MIMEMultipart())
self.subject = kwargs.get("subject", None)
self.body = kwargs.get("body", None)
self.attachment = kwargs.get("attachment", None)
未發送附件
只要附件是型別,附件就可以正常作業str。添加添加正文、主題等的其他功能可以正常作業。當我傳遞一個BytesIO()型別物件時,郵件被發送而沒有任何錯誤或警告,但附件沒有被發送。
for i ,attachment in enumerate(self.attachment,start=1):
p = MIMEBase('application', 'octet-stream')
if isinstance(attachment, str):
p.set_payload(open(attachment,"rb").read())
else:
p.set_payload((attachment).read())
encoders.encode_base64(p)
p.add_header('Content-Disposition', "attachment", filename= f'attachment{i}.jpg')
self.msg.attach(p)
為什么我首先使用BytesIO()?
好吧,我正在嘗試發送一個 QR 影像,它是使用保存的
qr_img.save(BytesIO(),format="png")
我正在嘗試發送從qrcode模塊生成的影像而不將其保存在本地。
訊息是這樣發送的:
self.server.send_message(msg)
self.server物件在哪里smtplib.SMTP_SSL()。
任何幫助表示贊賞,謝謝!
uj5u.com熱心網友回復:
問題是沒有使用.read()方法讀取緩沖區值。.getvalue()相反,使用該方法對我有用。
注意:使用.read().
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/472954.html
