詳解Python發(fā)送郵件實(shí)例
Python發(fā)送郵件需要smtplib和email兩個(gè)模塊。也正是由于我們在實(shí)際工作中可以導(dǎo)入這些模塊,才使得處理工作中的任務(wù)變得更加的簡單。今天,就來好好學(xué)習(xí)一下使用Python發(fā)送郵件吧。
SMTP是發(fā)送郵件的協(xié)議,Python內(nèi)置對(duì)SMTP的支持,可以發(fā)送純文本郵件、HTML郵件以及帶附件的郵件。
Python對(duì)SMTP支持有smtplib和email兩個(gè)模塊,email負(fù)責(zé)構(gòu)造郵件,smtplib負(fù)責(zé)發(fā)送郵件。
1.郵件正文是文本的格式
# -*- coding: UTF-8 -*- from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText import smtplib import sys import csv import xlrd from pyExcelerator import * import os import xlwt from xlutils.copy import copy import pyExcelerator import datetime import time reload(sys) sys.setdefaultencoding("utf-8") mailto_list = [""] # 郵件接收方的郵件地址 mail_host = "smtp.exmail.qq.com" # 郵件傳送協(xié)議服務(wù)器 mail_user = "" # 郵件發(fā)送方的郵箱賬號(hào) mail_pass = "" # 郵件發(fā)送方的郵箱密碼 def send_mail(to_list, sub, content): me = "天才白癡夢"+"<"+mail_user+">" msg = MIMEText(content, _subtype='plain', _charset='utf-8') msg['Subject'] = sub # 郵件主題 msg['From'] = me msg['To'] = ";".join(to_list) try: server = smtplib.SMTP() server.connect(mail_host) server.login(mail_user, mail_pass) server.sendmail(me, to_list, msg.as_string()) server.close() return True except Exception, e: print str(e) return False if __name__ == '__main__': sub = "天才白癡夢" content = '...' if send_mail(mailto_list, sub, content): print "發(fā)送成功" else: print "發(fā)送失敗"
2.郵件正文是表格的格式:由于是表格,所以我們選擇HTML來實(shí)現(xiàn)表格的功能,郵件上面顯示的就是HTML實(shí)現(xiàn)的內(nèi)容了。
# -*- coding: UTF-8 -*- from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText import smtplib import sys import csv import xlrd from pyExcelerator import * import os import xlwt from xlutils.copy import copy import pyExcelerator import datetime import time reload(sys) sys.setdefaultencoding("utf-8") mailto_list = [""] # 郵件接收方的郵件地址 mail_host = "smtp.exmail.qq.com" # 郵件傳送協(xié)議服務(wù)器 mail_user = "" # 郵件發(fā)送方的郵箱賬號(hào) mail_pass = "" # 郵件發(fā)送方的郵箱密碼 def send_mail(to_list, sub, content): me = "天才白癡夢"+"<"+mail_user+">" # 和上面的代碼不同的就是,這里我們選擇的是html 的格式 msg = MIMEText(content, _subtype='html', _charset='utf-8') msg['Subject'] = sub # 郵件主題 msg['From'] = me msg['To'] = ";".join(to_list) try: server = smtplib.SMTP() server.connect(mail_host) server.login(mail_user, mail_pass) server.sendmail(me, to_list, msg.as_string()) server.close() return True except Exception, e: print str(e) return False if __name__ == '__main__': sub = "天才白癡夢" html = '<html></html>' if send_mail(mailto_list, sub, html): print "發(fā)送成功" else: print "發(fā)送失敗"
3.郵件正文是圖片的格式:要把圖片嵌入到郵件正文中,我們只需按照發(fā)送附件的方式,先把郵件作為附件添加進(jìn)去,然后,在HTML中通過引用src="cid:0"就可以把附件作為圖片嵌入了。如果有多個(gè)圖片,給它們依次編號(hào),然后引用不同的cid:x即可。
def send_mail(to_list, sub, content): me = "天才白癡夢"+"<"+mail_user+">" msg = MIMEMultipart() msg['Subject'] = sub # 郵件主題 msg['From'] = me msg['To'] = ";".join(to_list) txt = MIMEText("天才白癡夢", _subtype='plain', _charset='utf8') msg.attach(txt) # <b>:黑體 <i>:斜體 msgText = MIMEText('<b>Some <i>HTML</i> text</b> and an image.<img alt="" src="cid:image1" />good!', 'html', 'utf-8') msg.attach(msgText) file1 = "F:\\1.jpg" image = MIMEImage(open(file1, 'rb').read()) image.add_header('Content-ID', '<image1>') msg.attach(image) try: server = smtplib.SMTP() server.connect(mail_host) server.login(mail_user, mail_pass) server.sendmail(me, to_list, msg.as_string()) server.close() return True except Exception, e: print str(e) return False if __name__ == '__main__': sub = "天才白癡夢" html = '<html></html>' if send_mail(mailto_list, sub, html): print "發(fā)送成功" else: print "發(fā)送失敗"
4.發(fā)送郵件附件:郵件附件是圖片
def send_mail(to_list, sub, content): me = "天才白癡夢"+"<"+mail_user+">" msg = MIMEMultipart() msg['Subject'] = sub # 郵件主題 msg['From'] = me msg['To'] = ";".join(to_list) txt = MIMEText("天才白癡夢", _subtype='plain', _charset='utf8') msg.attach(txt) # # <b>:黑體 <i>:斜體 # msgText = MIMEText('<b>Some <i>HTML</i> text</b> and an image.<img alt="" src="cid:image1" />good!', 'html', 'utf-8') # msg.attach(msgText) # # file1 = "F:\\1.jpg" # image = MIMEImage(open(file1, 'rb').read()) # image.add_header('Content-ID', '<image1>') # msg.attach(image) att = MIMEText(open('F:\\1.jpg', 'rb').read(), 'base64', 'utf-8') att["Content-Type"] = 'application/octet-stream' att["Content-Disposition"] = 'attachment; filename="1.jpg"' msg.attach(att) try: server = smtplib.SMTP() server.connect(mail_host) server.login(mail_user, mail_pass) server.sendmail(me, to_list, msg.as_string()) server.close() return True except Exception, e: print str(e) return False
5.發(fā)送群郵件:同時(shí)發(fā)送給多人
mailto_list = [""] # 郵件接收方的郵件地址
上面這一行代碼是郵件接收方的郵件地址,如果我們需要給多人發(fā)送郵件的話,就只需要把對(duì)方的郵件帳號(hào)綁在這一個(gè)列表里就ok了。
加密SMTP
使用標(biāo)準(zhǔn)的25端口連接SMTP服務(wù)器時(shí),使用的是明文傳輸,發(fā)送郵件的整個(gè)過程可能會(huì)被竊聽。要更安全地發(fā)送郵件,可以加密SMTP會(huì)話,實(shí)際上就是先創(chuàng)建SSL安全連接,然后再使用SMTP協(xié)議發(fā)送郵件。
方法:只需要在創(chuàng)建SMTP對(duì)象后,立刻調(diào)用starttls()方法,就創(chuàng)建了安全連接。
smtp_server = 'smtp.qq.com' smtp_port = 25 # 默認(rèn)端口號(hào)為25 server = smtplib.SMTP(smtp_server, smtp_port) server.starttls() # 剩下的代碼和前面的一模一樣: server.set_debuglevel(1) # 打印出和SMTP服務(wù)器交互的所有信息
以上就是關(guān)于Python發(fā)送郵件詳細(xì)解析,希望對(duì)大家的學(xué)習(xí)有所幫助。
- Python自動(dòng)發(fā)送郵件的方法實(shí)例總結(jié)
- Python發(fā)送郵件功能示例【使用QQ郵箱】
- python發(fā)送郵件的實(shí)例代碼(支持html、圖片、附件)
- python中使用smtplib和email模塊發(fā)送郵件實(shí)例
- Python實(shí)現(xiàn)給qq郵箱發(fā)送郵件的方法
- python同時(shí)給兩個(gè)收件人發(fā)送郵件的方法
- 利用Python自動(dòng)監(jiān)控網(wǎng)站并發(fā)送郵件告警的方法
- python發(fā)送郵件示例(支持中文郵件標(biāo)題)
- python監(jiān)控網(wǎng)站運(yùn)行異常并發(fā)送郵件的方法
- python發(fā)送郵件接收郵件示例分享
- python實(shí)現(xiàn)發(fā)送郵件功能
- Python發(fā)送郵件測試報(bào)告操作實(shí)例詳解
相關(guān)文章
pytorch模型訓(xùn)練的時(shí)候GPU使用率不高的問題
這篇文章主要介紹了pytorch模型訓(xùn)練的時(shí)候GPU使用率不高的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09python3 http.client/server post傳輸json問題
這篇文章主要介紹了python3 http.client/server post傳輸json問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09Django中Migrate和Makemigrations實(shí)操詳解
這篇文章主要為大家介紹了Django中Migrate和Makemigrations實(shí)操詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09python 使用百度AI接口進(jìn)行人臉對(duì)比的步驟
這篇文章主要介紹了python 使用百度AI接口進(jìn)行人臉對(duì)比的步驟,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03Python+Django實(shí)現(xiàn)簡單HelloWord網(wǎng)頁的示例代碼
本文主要介紹了Python+Django實(shí)現(xiàn)簡單HelloWord網(wǎng)頁的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04