練習python時遇到的問題
內容:
SMTP是發送郵件的協議,Python內置對SMTP的支持,可以發送純文本郵件、HTML郵件以及帶附件的郵件。
Python對SMTP支持有smtplib和email兩個模塊,email負責構造郵件,smtplib負責發送郵件。
首先,我們來構造一個最簡單的純文本郵件:
from email.mime.text import MIMETextmsg = MIMEText('hello, send by Python...', 'plain', 'utf-8')注意到構造MIMEText對象時,第一個參數就是郵件正文,第二個參數是MIME的subtype,傳入'plain'表示純文本,最終的MIME就是'text/plain',最后一定要用utf-8編碼保證多語言兼容性。
然后,通過SMTP發出去:
# 輸入Email地址和口令:from_addr = input('From: ')passWord = input('Password: ')# 輸入收件人地址:to_addr = input('To: ')# 輸入SMTP服務器地址:smtp_server = input('SMTP server: ')import smtplibserver = smtplib.SMTP(smtp_server, 25) # SMTP協議默認端口是25server.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:?
?------------------------分割線-----------------------------------------
我使用的是163郵箱
1、首先要確保自己的郵箱地址開啟了smtp服務,并設置客戶端授權登陸密碼:

2、發送郵件時,password應該填寫郵箱的授權登陸碼,而不是自己的郵箱密碼。
3、按照以上代碼運行,會報?錯
?Traceback (most recent call last):
File "mailDemo.py", line 24, in
server.sendmail(from_addr,[to_addr],msg.as_string())
File "C:/PRogramFiles/Python35-32/lib/smtplib.py", line 878, in sendmail
raise SMTPDataError(code,resp)
4、解決以上問題應該加上代碼:
?msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = 'the frist mail'
新聞熱點
疑難解答