為了更好的理解郵件發送功能的實現,要先了解郵件發送系統的大致流程。首先 電子郵件之間的相互發送接受就像 郵局郵件發送一樣,從一個站點(郵件發送服務器)到目的地站點(郵件接收服務器),然后目的地站點處理收到的郵件,并發送給接受人。每個郵件服務器即擔任發送也擔任接受郵件,并且每個服務器地址,端口號,配置等也不同。
其實發送郵件的流程就 兩部:
第一:寫郵件
寫好發送方,接受方
寫好主題
寫好正文(包括附件,圖片等)
把信件整理在一起
第二:發送郵件
連接發送郵件服務器
登錄郵箱
發送郵件
退出郵箱
代碼部分:
# -*- coding:utf-8 -*-import smtplibfrom email.header import Headerfrom email.mime.image import MIMEImagefrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMEText#創建郵件對象,相當于信紙msg = MIMEMultipart()#郵件發送方msg['From'] = 'XXXXXXXX.qq.com'#郵件接收方msg['To'] = '1212112@qq.com'#郵件主題msg['Subject'] = Header('這是郵箱主題部分', charset='UTF-8')#中文主題#文本內容txt = '親愛的用戶'part1 = MIMEText(txt, 'plain', 'utf-8')#添加到郵件中msg.attach(part1)#超文本內容,放有圖片,注意src路徑,此為放在同一目錄中html = '<div><img src="cid:image1">親愛的</div>'#一定要設置郵件格式,否則可能會亂碼,當時接手別人手中沒加郵件格式的項目,坑了我半天part2 = MIMEText(html, 'html', 'utf-8')#添加到郵件中msg.attach(part2)#圖片放到郵件中# 指定圖片為當前目錄fp = open('test.png', 'rb')msgImage = MIMEImage(fp.read())fp.close()# 定義圖片 ID,在 HTML 文本中引用msgImage.add_header('Content-ID', '<image1>')msg.attach(msgImage)#加入附件att2 = MIMEText('這是附件里的文字', 'base64', 'utf-8')att2["Content-Type"] = 'application/octet-stream'#設置附件名為runoob.txtatt2["Content-Disposition"] = 'attachment; filename="runoob.txt"'#附件放在郵件中msg.attach(att2)#非ssl方式的smtp(簡單郵件發送協議),下面注釋為ssl方式的smtpsmtp = smtplib.SMTP()# smtp = smtplib.SMTP_SSL()try: #連接主機地址 smtp.connect('mail.yto.net.cn:25') #登錄郵箱,需要郵箱賬號,密碼 smtp.login('XXXXXXXX.qq.com','234123') #發送郵件,需要登錄的郵箱號,發送方的郵箱號,發送內容 smtp.sendmail('XXXXXXXX.qq.com', '1212112@qq.com', msg.as_string()) #退出郵箱 smtp.quit() print 'The mail is sended successly.'except smtplib.SMTPException,e: print "Error: 無法發送郵件",e發送結果:

注意點:當自己郵箱作為郵件發送方時,注意郵件服務器的設置里把smtp服務打開

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答