Python學習筆記(四十七)SMTP發送郵件
阿新 • • 發佈:2017-09-10
email debug lib 第一個 發郵件 參數 html郵件 命令 兼容
摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432005226355aadb8d4b2f3f42f6b1d6f2c5bd8d5263000
SMTP是發送郵件的協議,Python內置對SMTP的支持,可以發送純文本郵件、HTML郵件以及帶附件的郵件。
Python對SMTP支持有smtplib
和email
兩個模塊,email
負責構造郵件,smtplib
負責發送郵件。
首先,我們來構造一個最簡單的純文本郵件:
from email.mime.text import MIMEText
msg = MIMEText(‘hello, send by Python...‘, ‘plain‘, ‘utf-8‘)
註意到構造MIMEText
對象時,第一個參數就是郵件正文,第二個參數是MIME的subtype,傳入‘plain‘
表示純文本,最終的MIME就是‘text/plain‘
,最後一定要用utf-8
編碼保證多語言兼容性。
然後,通過SMTP發出去:
from email.mime.text import MIMEText
msg = MIMEText(‘Hello, send by Python...‘, ‘plain‘, ‘utf-8‘)
# 輸入Email地址和口令:
from_addr = input(‘From:‘)
password = input(‘Password:‘)
# 輸入收件人地址:
to_addr = input(‘To:‘)
# 輸入SMTP服務器地址:
smtp_server = input(‘SMTP server:‘)
import smtplib
# SMTP 協議默認端口是25
server = smtplib.SMTP(smtp_server, 25)
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
我們用set_debuglevel(1)
就可以打印出和SMTP服務器交互的所有信息。SMTP協議就是簡單的文本命令和響應。login()
方法用來登錄SMTP服務器,sendmail()
方法就是發郵件,由於可以一次發給多個人,所以傳入一個list
,郵件正文是一個str
,as_string()
把MIMEText
對象變成str
。
如果一切順利,就可以在收件人信箱中收到我們剛發送的Email:
Python學習筆記(四十七)SMTP發送郵件