python 判断对象为空中邮件对象的主题怎么得到

做了一个简单的邮件查看器,但是窗口上没有显示得到的邮件信息_python吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:34,327贴子:
做了一个简单的邮件查看器,但是窗口上没有显示得到的邮件信息收藏
新手求指导,明天要交的东西#coding=utf-8
from Tkinter import *
import string
import sys
import time
import email
import imaplib reload(sys)sys.setdefaultencoding('gbk')strsub=&&suffix =None strfrom=&&
#设置全局变量strdate=&&mailContent = Nonelines=[]class watchMail(object):
'my watchMail class'
def __init__(self,master):
self.master = master
global strsub
global strfrom
#引入全局变量
global strdate
global lines
self.sendToLabel = Label(self.master, text='subject:')
self.sendToLabel.grid()
self.sendToText = Text(self.master,height=1,width=20)
self.sendToText.grid(row=0, column=1, columnspan=1)
self.sendToText.insert(1.0,strsub)
self.fromToLabel = Label(self.master, text='from:')
self.fromToLabel.grid(row=1, column=0)
self.formToAdd = Label(self.master, text=strfrom)
self.formToAdd.grid(row=1, column=1)
self.fromToLabel = Label(self.master, text='Date:')
self.fromToLabel.grid(row=2, column=0)
self.formToAdd = Label(self.master, text=strdate)
self.formToAdd.grid(row=2, column=1)
self.sendText = Text(self.master)
self.sendText.grid(row=3, column=0, columnspan=2)
for line in lines:
self.sendText.insert(1.0,line)
def savefile(self,filename, data, path):
#储存文件方法
global lines
filepath = path + filename
print 'Saved as ' + filepath
f = open(filepath, 'wb')
print('filename error')
lines = f.readline()
f.write(data)
#字符编码转换方法
def my_unicode(self,s, encoding):
if encoding:
return unicode(s, encoding)
return unicode(s)#获得字符编码方法
def get_charset(self,message, default=&ascii&):
#Get the message charset
return message.get_charset()
return default#解析邮件方法(区分出正文与附件)
def parseEmail(self,msg, mypath):
contenttype = None
global suffix
global mailContent
for part in msg.walk():
if not part.is_multipart():
contenttype = part.get_content_type()
filename = part.get_filename()
charset = get_charset(part)
#是否有附件
if filename:
h = email.Header.Header(filename)
dh = email.Header.decode_header(h)
fname = dh[0][0]
encodeStr = dh[0][1]
if encodeStr != None:
if charset == None:
fname = fname.decode(encodeStr, 'gbk')
fname = fname.decode(encodeStr, charset)
data = part.get_payload(decode=True)
print('Attachment : ' + fname)
if fname != None or fname != '':
savefile(fname, data, mypath)
if contenttype in ['text/plain']:
suffix = '.txt'
if contenttype in ['text/html']:
suffix = '.htm'
if charset == None:
mailContent = part.get_payload(decode=True)
mailContent = part.get_payload(decode=True).decode(charset)
(mailContent, suffix)
#获取邮件方法
def getMail(self,mailhost='', account='QQ号@qq.com', password='***********', diskroot='e', port = 993, ssl = 1):
mypath = str(diskroot) + ':\\'
#是否采用ssl
if ssl == 1:
imapServer = imaplib.IMAP4_SSL(mailhost, port)
imapServer = imaplib.IMAP4(mailhost, port)
imapServer.login(account, password)
imapServer.select()
#邮件状态设置,新邮件为Unseen
#Message statues = 'All,Unseen,Seen,Recent,Answered, Flagged'
resp, items = imapServer.search(None, &Unseen&)#不知道为什么,设置All,Recent都不能取得邮件,但没有报错。
number = 1
#get information of email
resp,mailData = imapServer.fetch(i, &(RFC822)&)
mailText = mailData[0][1]
msg = email.message_from_string(mailText)
ls = msg[&From&].split(' ')
global strsub
global strfrom
global strdate
global mailContent
if(len(ls) == 2):
fromname = email.Header.decode_header((ls[0]).strip('\&'))
strfrom = 'From : ' + self.my_unicode(fromname[0][0], fromname[0][1]) + ls[1]
strfrom = 'From : ' + msg[&From&]
strdate = 'Date : ' + msg[&Date&]
subject = email.Header.decode_header(msg[&Subject&])
sub = self.my_unicode(subject[0][0], subject[0][1])
strsub = 'Subject : ' + sub
global suffix
mailContent, suffix = parseEmail(msg, mypath)
#保存邮件正文
if (suffix != None and suffix != '') and (mailContent != None and mailContent != ''):
self.savefile(str(number) + suffix, mailContent, mypath)
'''number=number+1'''
imapServer.close()
imapServer.logout()
if __name__ == '__main__':
#邮件保存在e盘
root = Tk()
root.title('简易查看邮件程序')
myWatchMail=watchMail(root)
#root.wait_window(myLogin.mySendMail.watchPage)
mainloop()
跪求大神指导,明天就不指望能交了,只能显示发件人信息......................#coding=utf-8
from Tkinter import *
import string
import sys
import time
import email
import imaplib reload(sys)sys.setdefaultencoding('gbk')class watchMail(object):
'my watchMail class'
def __init__(self,master):
self.master = master
self.lines=[]
(self.strfrom1,self.strdate1,self.strsub1)=self.getMail()
self.subjectLabel = Label(self.master, text='subject:')
self.subjectLabel.grid()
self.subjectText = Text(self.master,height=1,width=20)
self.subjectText.grid(row=0, column=1, columnspan=1)
self.subjectText.insert(1.0,self.strsub1)
self.fromLabel = Label(self.master, text='from:')
self.fromLabel.grid(row=1, column=0)
self.formAdd = Label(self.master, text=self.strfrom1)
self.formAdd.grid(row=1, column=1)
self.dateLabel = Label(self.master, text='Date:')
self.dateLabel.grid(row=2, column=0)
self.dateToAdd = Label(self.master, text=self.strdate1)
self.dateToAdd.grid(row=2, column=1)
self.contentText = Text(self.master)
self.contentText.grid(row=3, column=0, columnspan=2)
for line in self.lines:
self.contentText.insert(1.0,line)
def savefile(self,filename, data, path): #储存文件方法
filepath = path + filename
print 'Saved as ' + filepath
f = open(filepath, 'wb')
print('filename error')
self.lines = f.readline()
f.write(data)
def my_unicode(self,s, encoding):#字符编码转换方法
if encoding:
return unicode(s, encoding)
return unicode(s)
def get_charset(self,message, default=&ascii&):#获得字符编码方法
return message.get_charset()
return default
def parseEmail(self,msg, mypath):#解析邮件方法(区分出正文与附件)
contenttype = None
suffix =None
mailContent = None
for part in msg.walk():
if not part.is_multipart():
contenttype = part.get_content_type()
filename = part.get_filename()
charset = get_charset(part)
#是否有附件
if filename:
h = email.Header.Header(filename)
dh = email.Header.decode_header(h)
fname = dh[0][0]
encodeStr = dh[0][1]
if encodeStr != None:
if charset == None:
fname = fname.decode(encodeStr, 'gbk')
fname = fname.decode(encodeStr, charset)
data = part.get_payload(decode=True)
print('Attachment : ' + fname)
if fname != None or fname != '': #保存附件
savefile(fname, data, mypath)
if contenttype in ['text/plain']:
suffix = '.txt'
if contenttype in ['text/html']:
suffix = '.htm'
if charset == None:
mailContent = part.get_payload(decode=True)
mailContent = part.get_payload(decode=True).decode(charset)
(self.mailContent,self.suffix) #获取邮件方法
def getMail(self,mailhost='', account='QQ号@qq.com', password='***********', diskroot='e', port = 993, ssl = 1):
#邮件保存在e盘
#126邮箱登陆没用ssl
#getMail('', '', 'xxxxxxxxxx', mypath, 143, 0)
mypath = str(diskroot) + ':\\'
if ssl == 1: #是否采用ssl
imapServer = imaplib.IMAP4_SSL(mailhost, port)
imapServer = imaplib.IMAP4(mailhost, port)
imapServer.login(account, password)
imapServer.select()
resp, items = imapServer.search(None, &Unseen&) #邮件状态设置,新邮件为Unseen
#Message statues = 'All,Unseen,Seen,Recent,Answered, Flagged'
number = 1
#get information of email
resp,mailData = imapServer.fetch(number, &(RFC822)&)
mailText = mailData[0][1]
msg = email.message_from_string(mailText)
ls = msg[&From&].split(' ')
strfrom=''
strdate=''
strsub=''
if(len(ls) == 2):
fromname = email.Header.decode_header((ls[0]).strip('\&'))
strfrom = 'From : ' + self.my_unicode(fromname[0][0], fromname[0][1]) + ls[1]
strfrom = 'From : ' + msg[&From&]
strdate = 'Date : ' + msg[&Date&]
subject = email.Header.decode_header(msg[&Subject&])
sub = self.my_unicode(subject[0][0], subject[0][1])
strsub = 'Subject : ' + sub
mailContent, suffix = parseEmail(msg, mypath)
return (strfrom, strdate, strsub)
#保存邮件正文
if (suffix != None and suffix != '') and (mailContent != None and mailContent != ''):
self.savefile(str(number) + suffix, mailContent, mypath)
'''number=number+1'''
imapServer.close()
imapServer.logout()
if __name__ == '__main__':
root = Tk()
root.title('简易查看邮件程序')
myWatchMail=watchMail(root)
#root.wait_window(myLogin.mySendMail.watchPage)
mainloop()
找到原因了,某处缩进错了,泪奔..................................
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或当前位置:&>&&>&&>&
Python发送email邮件的多种方法
发布时间:编辑:
本文介绍了python发送email邮件的几种方法,包括登录邮件服务、调用sendmail命、使用smtp服务来发送(本地或者是远程服务器),需要的朋友参考下。
推荐阅读:
发送email的几种常用方法
学过python的人都知道,实用python实现发送email的功能还是比较简单的,可以通过登录邮件服务来发送,linux系统中也可以使用调用sendmail命令来发送,还可以使用本地或者是远程的smtp服务来,不管是单个,群发,还是抄送都比较容易实现。
本文就把几个最简单的发送邮件方式记录下来,像html邮件,附件等也是支持的,读者在需要时可以参考查询下。
1,登录邮件服务
复制代码 代码示例:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#python2.7x
#send_simple_email_by_account.py @
#author: orangleliu
使用python写邮件 simple
使用126 的邮箱服务
import smtplib
from email.mime.text import MIMEText
SMTPserver = ''
sender = ''
password = &xxxx&
message = 'I send a message by Python. 你好'
msg = MIMEText(message)
msg['Subject'] = 'Test Email by Python'
msg['From'] = sender
msg['To'] = destination
mailserver = smtplib.SMTP(SMTPserver, 25)
mailserver.login(sender, password)
mailserver.(sender, [sender], msg.as_string())
mailserver.quit()
print 'send email success'
2.调用sendmail命令 ()
复制代码 代码示例:
# -*- coding: utf-8 -*-
#python2.7x
#send_email_by_.py
#author: orangleliu
用的是sendmail命令的方式
这个时候邮件还不定可以发出来,配置可能需要更改
from email.mime.text import MIMEText
from subprocess import Popen, PIPE
def get_sh_res():
& p = Popen(['/Application/2.0/nirvana/logs/log.sh'], stdout=PIPE)
& return municate()[0])
def mail_send(sender, recevier):
& print &get email info...&
& msg = MIMEText(get_sh_res())
& msg[&From&] = sender
& msg[&To&] = recevier
& msg[&Subject&] = &Yestoday interface log results&
& p = Popen([&/usr/sbin/sendmail&, &-t&], stdin=PIPE)
& res = p.communicate(msg.as_string())
& print 'mail sended ...'
if __name__ == &__main__&:
& mail_send(s, r)
3、使用smtp服务来发送(本地或者是远程)
复制代码 代码示例:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#python2.7x
#send_email_by_smtp.py
#author: orangleliu
linux 下使用本地的smtp服务来发送邮件
前提要开启smtp服务,检查的方法
#ps -ef|grep sendmail
#telnet localhost 25
这个时候邮件还不定可以发出来,hostname配置可能需要更改
import smtplib
from email.mime.text import MIMEText
from subprocess import Popen, PIPE
def get_sh_res():
& p = Popen(['/Application/2.0/nirvana/logs/log.sh'], stdout=PIPE)
& return municate()[0])
def mail_send(sender, recevier):
& msg = MIMEText(get_sh_res())
& msg[&From&] = sender
& msg[&To&] = recevier
& msg[&Subject&] = &Yestoday interface log results&
& s = smtplib.SMTP('localhost')
& s.sendmail(sender, [recevier], msg.as_string())
& s.quit()
& print 'send mail finished...'
if __name__ == &__main__&:
& mail_send(s, r)
以上介绍了三种python实现邮件发送的方法,例子很简单,但涵盖的内容还是很多的,大家可以认真研究下。
您可能感兴趣的文章:
与 Python发送email邮件的多种方法 有关的文章
本文标题:
本页链接:
12345678910
12345678910用心创造滤镜
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
很酷不拉风会死~~
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
在SMTP中我们主要用到的方法是:sendmail(from,to,msg[,mopts,ropts])&& 是把msg从from发给to,ESMTP设置(mopts)和收件人设置(ropts)可选quit() 关闭连接login(user,passwd) 使用user用户和密码登陆到SMTP服务器。下面举个应用的实例:(密码我隐藏了,(*^__^*) )这里是用我的163邮箱给我的QQ邮箱发了一个邮件,邮件的内容就是在msgbody中的字符。运行,几秒钟后我就收到了。如果我们想更简单的写,三句话就行。Smtplib.SMTP( )Login( )Sendmail( )只要写对了参数,上面三个就可以了。二,接收Email接收常用的协议是“邮局协议(POP)”和“交互式邮件访问协议(IMAP)”。这里我们用POP3作为例子。在python中有poplib模块。接收邮件的步骤是:1 连接服务器2 登陆3 发出服务请求4 退出poplib中常用的方法有:user(login)发送用户名login到服务器pass(passwd)发送密码。stat()返回邮件的状态。一个长度为2的元组(msg_ct,mbox_siz),消息的数量和消息的总大小list([msgnum])& stat()的扩展,从服务器返回长度为3的元组(rsp,msg_list,rsp_siz):服务器返回信息,消息列表,返回信息的大小。retr(msgnum)从服务器中得到消息msgnum,并设置其已读标志。返回一个长度为3的元组(rsp,msglines,msgsiz):服务器返回信息,消息msgnum的所有行,消息字节数dele(msgnum) 把消息msgnum标记为删除。quit() 登出。下面看例子,我们就去接受刚才我们发送的邮件。由于我的python shell没有装中文支持,所以在命令行无法输出中文字符。但是结果是正确,验证的方法有很多,最近的是可以对照当时发送的时候,shell的输出信息。上面两个例子简单实现了收发邮件的功能。其实我们可以根据这个然后加上GUI的应用,自己编写一个邮件客户端软件,像Foxmail一样的,当然我们不能做到那么强大,但是简单的收发功能还是可以实现的,有兴趣的可以试一下。
阅读(873)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'自带模块收发邮件---python',
blogAbstract:'关于Email的基础知识就不说,直接进入python主题。一 发送Email简单邮件传输协议(SMTP)大家应该都很熟悉了,在python中也有一个smtplib的模块来实现发送邮件的功能,一般的过程是:1 连接到邮件服务器2 登陆(如果需要的话)3 发出服务请求(比如发送)4 退出在SMTP中我们主要用到的方法是:sendmail(from,to,msg[,mopts,ropts])&&',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:3,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:true,
hostIntro:'很酷不拉风会死~~',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 python 判断对象为空 的文章

 

随机推荐