我想知道「通過python腳本發送帶附件的電子郵件的最佳方式是什麼」? 我應該用「子」,並藉此命令行Python腳本 - 發送電子郵件
"mail -s "Test" [email protected] < file.txt"
另一種選擇是https://docs.python.org/2/library/email-examples.html的smtplib?
哪個選項更好?
我想知道「通過python腳本發送帶附件的電子郵件的最佳方式是什麼」? 我應該用「子」,並藉此命令行Python腳本 - 發送電子郵件
"mail -s "Test" [email protected] < file.txt"
另一種選擇是https://docs.python.org/2/library/email-examples.html的smtplib?
哪個選項更好?
Python將是更靈活的發送電子郵件的方式。而且,正如你已經使用Python,將是最明智的。不需要使用子進程來調用外部腳本(這可能是不安全的)。
您可以附加更多不同類型的文件,更好地控制機構的內容。如果你想要的話,你可以把它變成一個通用的函數或類,可以給文本和文件名,收件人等
如果你有一個像上面這樣的類,你可以將它導入到其他程序中,它可以用於調試或者發生錯誤時發送標誌(或者有趣的事情發生)。
我傾向於用它來通知我運行一些自動化過程的健康狀況。
另外@hiroprotagonist提到 - 這將使腳本平臺獨立。
從你鏈接的文檔此略有精簡下來的例子是你真正需要知道:
# Import smtplib for the actual sending function
import smtplib
# Here are the email package modules we'll need
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
# Create the container (outer) email message.
msg = MIMEMultipart()
msg['Subject'] = 'Subject'
me = '[email protected]'
recipient = '[email protected]'
msg['From'] = me
msg['To'] = recipient
# Assume we know that the image files are all in PNG format
for file in pngfiles:
# Open the files in binary mode. Let the MIMEImage class automatically
# guess the specific image type.
fp = open(file, 'rb')
img = MIMEImage(fp.read())
fp.close()
msg.attach(img)
# Send the email via our own SMTP server.
s = smtplib.SMTP('localhost')
s.sendmail(me, recipient, msg.as_string())
s.quit()
的yagmail全部目的(我開發者)是使其很容易發送電子郵件特別是在HTML或附件需求方面。
請嘗試以下代碼:
import yagmail
yag = yagmail.SMTP('[email protected]', 'password')
contents = ['See my attachment below', '/home/you/some_file.txt']
yag.send('[email protected]', subject = 'Subject', contents = contents)
通知神奇在這裏:contents
是一個列表,在這裏等於文件路徑的項目會自動加載,MIME類型猜到了,和連接。
還有更多的魔法參與,比如容易嵌入圖片,無密碼腳本,無用戶腳本,簡單的別名,智能默認等等。我建議/鼓勵你閱讀它的github頁面:-)。隨意提出問題或添加功能請求!
您可以通過使用PIP安裝它得到yagmail:
pip install yagmail # Python 2
pip3 install yagmail # Python 3
我建議你使用庫(的smtplib)。這樣您的腳本將獨立於您運行它的平臺運行。 –
您的命令將讀取要從'file.txt'發送的電子郵件。沒有跡象表明它會發送帶有附件的電子郵件。 – jfs
相關:[如何發送電子郵件附件與python](http://stackoverflow.com/q/3362600/4279) – jfs