本章以qq爲例,使用前先在郵箱-設置-帳戶-開通POP3/SMTP服務,須要發送手機驗證碼,返回一個受權碼html
import smtplib from email.mime.text import MIMEText def sendmail(subject, content): email_host = 'smtp.qq.com' # 發送者是qq郵箱 email_user = '你填寫受權碼的qq郵箱@qq.com' # 發送者帳號 email_pwd = '你的受權碼' # 發送者密碼 maillist ='你的接受者帳號@qq.com' # 接收者帳號,原本想寫成[]list的,可是報錯,還沒解決! me = email_user msg = MIMEText(content, 'html', 'utf-8') # 郵件內容,三個參數:第一個爲文本內容,第二個 html 設置文本格式,第三個 utf-8 設置編碼 msg['Subject'] = subject # 郵件主題 msg['From'] = me # 發送者帳號 msg['To'] = maillist # 接收者帳號列表(列表沒實現) smtp = smtplib.SMTP(email_host) # 如上變量定義的,是qq郵箱 smtp.login(email_user, email_pwd) # 發送者的郵箱帳號,密碼 smtp.sendmail(me, maillist, msg.as_string()) # 參數分別是發送者,接收者,第三個不知道 smtp.quit() # 發送完畢後退出smtp print ('email send success.') sendmail('主題', '內容') # 調用發送郵箱的函數
demo1.pypython
# smtp =>simple mail transfer protocol 簡單郵件傳輸協議 import smtplib import email # 文件名不能夠和引入的庫同名 from email.mime.image import MIMEImage # 圖片類型郵件 from email.mime.text import MIMEText # MIME 多用於郵件擴充協議 from email.mime.multipart import MIMEMultipart # 建立附件類型 HOST = 'smtp.qq.com' # 調用的郵箱藉藉口 SUBJECT = '發送了一封測試郵件' # 設置郵件標題 FROM = '你的受權碼郵箱@qq.com' # 發件人的郵箱需先設置開啓smtp協議 TO = '發送者qq郵箱@qq.com' # 設置收件人的郵箱(能夠一次發給多我的,用逗號分隔) message = MIMEMultipart('related') # 郵件信息,內容爲空 #至關於信封##related表示使用內嵌資源的形式,將郵件發送給對方 def sendmail(HOST, SUBJECT,FROM,TO,message): """ 發送郵件主體到對方郵箱 :發送信息參數說明: 1.內容必須是字符串 2.內容形式,文本類型默認爲plain 3.內容編碼使用utf-8 :其餘: 圖片和excel文件須要和本腳本一個目錄下 """ # ===========發送信息內容============= # message_html = MIMEText('shuai123 消滅不開行', 'plain', 'utf-8') message_html = MIMEText('<h1 style="color:red;font-size:100px">測試信息已收到</h1><img src="cid:small">', 'html', 'utf-8') message.attach(message_html) # ===========發送圖片-============= #發送圖片-預覽信息 image_data = open('email_demo.jpg', 'rb') message_image = MIMEImage(image_data.read()) image_data.close()# 關閉剛纔打開的文件 message_image.add_header('Content-ID', 'small') message.attach(message_image)# 添加圖片文件到郵件信息中去 #發送圖片-附件 message_image = MIMEText(open('email_demo.jpg', 'rb').read(), 'base64', 'utf-8') message_image['Content-disposition'] = 'attachment;filename="email_demo_change.jpg"'# 設置圖片在附件當中的名字 message.attach(message_image)# 添加圖片文件到郵件-附件中去 # ===========發送excel-附件============= message_xlsx = MIMEText(open('email_demo.xlsx', 'rb').read(), 'base64', 'utf-8')# 將xlsx文件做爲內容發送到對方的郵箱讀取excel,rb形式讀取,對於MIMEText()來講默認的編碼形式是base64 對於二進制文件來講沒有設置base64,會出現亂碼 message_xlsx['Content-Disposition'] = 'attachment;filename="email_demo_change.xlsx"'# 設置文件在附件當中的名字 message.attach(message_xlsx)# 添加excel文件到郵件-附件中去 # ===========配置相關-============= message['From'] = FROM # 設置郵件發件人 message['TO'] = TO # 設置郵件收件人 message['Subject'] = SUBJECT # 設置郵件標題 email_client = smtplib.SMTP_SSL()# 獲取江建有獎傳輸協議證書 email_client.connect(HOST, '465')# 設置發送域名,端口465 result = email_client.login(FROM, '你的QQ受權碼') # qq受權碼 print('登陸結果', result) # ===========操做============= email_client.sendmail(from_addr=FROM, to_addrs=TO.split(','), msg=message.as_string()) #發送郵件指令 email_client.close()# 關閉郵件發送客戶端 if __name__ == '__main__': sendmail(HOST=HOST, SUBJECT=SUBJECT,FROM=FROM,TO=TO,message=message)
demo2.py函數
1.使用Python來操做郵箱:https://blog.csdn.net/qq_38059635/article/details/81569081測試
2.python3 發郵件 smtplib & email 庫:https://www.cnblogs.com/vivivi/p/5952093.htmlui