python發(fā)送郵件實例分享
為了更好的理解郵件發(fā)送功能的實現,要先了解郵件發(fā)送系統(tǒng)的大致流程。首先 電子郵件之間的相互發(fā)送接受就像 郵局郵件發(fā)送一樣,從一個站點(郵件發(fā)送服務器)到目的地站點(郵件接收服務器),然后目的地站點處理收到的郵件,并發(fā)送給接受人。每個郵件服務器即擔任發(fā)送也擔任接受郵件,并且每個服務器地址,端口號,配置等也不同。
其實發(fā)送郵件的流程就 兩部:
第一:寫郵件
寫好發(fā)送方,接受方
寫好主題
寫好正文(包括附件,圖片等)
把信件整理在一起
第二:發(fā)送郵件
連接發(fā)送郵件服務器
登錄郵箱
發(fā)送郵件
退出郵箱
代碼部分:
# -*- coding:utf-8 -*-
import smtplib
from email.header import Header
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
#創(chuàng)建郵件對象,相當于信紙
msg = MIMEMultipart()
#郵件發(fā)送方
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.txt
att2["Content-Disposition"] = 'attachment; filename="runoob.txt"'
#附件放在郵件中
msg.attach(att2)
#非ssl方式的smtp(簡單郵件發(fā)送協議),下面注釋為ssl方式的smtp
smtp = smtplib.SMTP()
# smtp = smtplib.SMTP_SSL()
try:
#連接主機地址
smtp.connect('mail.yto.net.cn:25')
#登錄郵箱,需要郵箱賬號,密碼
smtp.login('XXXXXXXX.qq.com','234123')
#發(fā)送郵件,需要登錄的郵箱號,發(fā)送方的郵箱號,發(fā)送內容
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: 無法發(fā)送郵件",e
發(fā)送結果:

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

