python发送邮件 退回_python 发送邮件(收到的邮件要有发送方才能回复)
Python使用SMTP(簡(jiǎn)單郵件傳輸協(xié)議)發(fā)送郵件
普通文本郵件
普通文本郵件發(fā)送的實(shí)現(xiàn),關(guān)鍵是要將MIMEText中_subtype設(shè)置為plain
## -*- coding: UTF-8 -*-
import smtplib
from email.mime.text import MIMEText#導(dǎo)入MIMEText類
from email import encoders
from email.header import Header
from email.utils import parseaddr, formataddr
mail_host="smtp.163.com"#使用的郵箱的smtp服務(wù)器地址,這里是163的smtp地址
mail_user=raw_input("你的163郵箱: ")#發(fā)送方郵箱
mail_pass=raw_input("郵箱授權(quán)碼: ") #授權(quán)碼
mail_postfix="163.com"#郵箱的后綴,網(wǎng)易就是163.com
mail_from = raw_input("來自: ") #發(fā)送方昵稱
mail_sub = raw_input("郵件主題: ") #郵件主題
mail_content = raw_input("內(nèi)容: ")
def send_mail(sub,content):
me=mail_from+""
msg = MIMEText(content,‘plain‘,‘utf-8‘)#郵件正文,subtype(文本是plain),編碼格式
msg[‘Subject‘] = sub
msg[‘From‘] = me
to_list = map(None,raw_input("mail_to: ").split(" "))#可以群發(fā)
msg[‘To‘] = ",".join(to_list)#將收件人列表以‘,’分隔
try:
server = smtplib.SMTP()
server.connect(mail_host)#連接服務(wù)器
server.login(mail_user,mail_pass)#登錄操作
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception, e:#捕捉異常,并將異常對(duì)象輸出
print str(e)
return False
if send_mail(mail_sub , mail_content): #郵件主題和郵件內(nèi)容
print "done!"
else:
print "failed!"
MIME(Multipurpose Internet Mail Extensions)多用途互聯(lián)網(wǎng)郵件擴(kuò)展類型。是設(shè)定某種擴(kuò)展名的文件用一種應(yīng)用程序來打開的方式類型,當(dāng)該擴(kuò)展名文件被訪問的時(shí)候,瀏覽器會(huì)自動(dòng)使用指定應(yīng)用程序來打開。多用于指定一些客戶端自定義的文件名,以及一些媒體文件打開方式。
它是一個(gè)互聯(lián)網(wǎng)標(biāo)準(zhǔn),擴(kuò)展了電子郵件標(biāo)準(zhǔn),使其能夠支持:
非ASCII字符文本;非文本格式附件(二進(jìn)制、聲音、圖像等);由多部分(multiple parts)組成的消息體;包含非ASCII字符的頭信息(Header information)。
這個(gè)標(biāo)準(zhǔn)被定義在RFC 2045、RFC 2046、RFC 2047、RFC 2048、RFC 2049等RFC中。 MIME改善了由RFC 822轉(zhuǎn)變而來的RFC 2822,這些舊標(biāo)準(zhǔn)規(guī)定電子郵件標(biāo)準(zhǔn)并不允許在郵件消息中使用7位ASCII字符集以外的字符。正因如此,一些非英語字符消息和二進(jìn)制文件,圖像,聲音等非文字消息原本都不能在電子郵件中傳輸(MIME可以)。MIME規(guī)定了用于表示各種各樣的數(shù)據(jù)類型的符號(hào)化方法。 此外,在萬維網(wǎng)中使用的HTTP協(xié)議中也使用了MIME的框架,標(biāo)準(zhǔn)被擴(kuò)展為互聯(lián)網(wǎng)媒體類型。
import smtplib
from email.mime.text import MIMEText
#用來格式化郵件地址
from email.header import Header
from email.utils import parseaddr, formataddr
msg = MIMEText(‘別人的容忍不是讓你踐踏的!!‘, ‘plain‘, ‘utf-8‘)
# 輸入Email地址和口令:
from_addr = raw_input(‘From(163郵箱): ‘)
#這里的密碼一定是授權(quán)碼,163郵箱原始密碼不行。
password = raw_input(‘授權(quán)碼: ‘)
# 輸入SMTP服務(wù)器地址:這里我們用smtp.163.com
#smtp_server = raw_input(‘SMTP server: ‘)
smtp_server = "smtp.163.com"
# 輸入收件人地址:
to_addr = raw_input(‘To: ‘)
def _format_addr(s):
name, addr = parseaddr(s)#這個(gè)函數(shù)會(huì)解析出姓名和郵箱地址
return formataddr(( Header(name, ‘utf-8‘).encode(), addr.encode(‘utf-8‘) if isinstance(addr, unicode) else addr))
def send_mail():
#設(shè)置發(fā)件人,收件人姓名和郵件主題
msg[‘From‘] = _format_addr(u‘joker ‘ % from_addr)
msg[‘To‘] = _format_addr(u‘朋友 ‘ % to_addr)
msg[‘Subject‘] = Header(u‘測(cè)試郵件‘, ‘utf-8‘).encode()
server = smtplib.SMTP(smtp_server, 25) # SMTP協(xié)議默認(rèn)端口是25
#server.set_debuglevel(1)#打印出和SMTP服務(wù)器交互的所有信息
server.login(from_addr, password)#登錄服務(wù)器
#發(fā)送郵件,這里第二個(gè)參數(shù)是個(gè)列表,可以有多個(gè)收件人
#郵件正文是一個(gè)str,as_string()把MIMEText對(duì)象變成str
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
return True
if send_mail():
print "done!"
總結(jié)
以上是生活随笔為你收集整理的python发送邮件 退回_python 发送邮件(收到的邮件要有发送方才能回复)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 亮照公示专用什么意思(备案和亮照)
- 下一篇: python数据分析架构_Python数