我想合并資料,以便我只能發送一封電子郵件
for body in result:
msg = EmailMessage()
msg.set_content(body)
msg['From'] = email_address
msg['To'] = recipient_address
msg['Subject'] = subject_desc
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login("[email protected]", password)
print("login success")
server.send_message(msg)
print("This message has been sent")
server.quit()
這段代碼實際上向我發送了十多封電子郵件,其中包含我從中獲得的資料,result因為它處于回圈狀態,但我想為這十多資料收到一封電子郵件。我試過這樣的事情:
def email(body):
data = []
for body in result:
data.append(body)
return data
但它仍然發送了十幾封電子郵件而不是一封,我該怎么辦?
提前謝謝你:)
uj5u.com熱心網友回復:
如果您有包含許多字串的串列,則創建一個字串
body = "\n".join(result)
并發送無for回圈。
msg = EmailMessage()
body = "\n".join(result)
#body = "\n---\n".join(result) # to separate result with line `---`
msg.set_content(body)
msg['From'] = email_address
msg['To'] = recipient_address
msg['Subject'] = subject_desc
如果您有包含檔案名的串列,那么您可以使用for-loop 但使用不同的縮進。
這是僅發送影像的示例。對于其他型別的檔案,它需要不同的maintype,subtype
filenames = ['images/lenna.jpg', 'images/cats.jpg']
# ...
msg = EmailMessage()
for name in filenames:
msg.add_attachment(open(name, 'rb').read(), filename=name, maintype='text', subtype='jpg')
msg['From'] = email_address
msg['To'] = recipient_address
msg['Subject'] = subject_desc
或者你可以使用其他模塊來猜測型別
import mimetypes
# ... code ...
for name in filenames:
ctype, encoding = mimetypes.guess_type(name)
print(name, ctype, encoding)
maintype, subtype = ctype.split('/')
msg.add_attachment(open(name, 'rb').read(), filename=name, maintype=maintype, subtype=subtype)
當然,您也可以在同一郵件中使用set_content()和add_attachment()。
它可用于發送帶有影像的 HTML - 但我跳過了這個例子。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/358705.html
