python读取163邮件内容_python模拟登陆163邮箱并下载邮件内容(第三版代码片段)

1.[代码][Python]代码

#coding:utf-8

'''

模拟登陆163邮箱并下载邮件内容

@author: fc_lamp

@blog:fc-lamp.blog.163.com

'''

import urllib

import urllib2

import cookielib

import re

import time

import json

class Email163:

header = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}

user = ''

cookie = None

sid = None

mailBaseUrl='http://twebmail.mail.163.com'

def __init__(self):

self.cookie = cookielib.CookieJar()

cookiePro = urllib2.HTTPCookieProcessor(self.cookie)

urllib2.install_opener(urllib2.build_opener(cookiePro))

def login(self,user,pwd):

'''

登录

'''

postdata = urllib.urlencode({

'username':user,

'password':pwd,

'type':1

})

#注意版本不同,登录URL也不同

req = urllib2.Request(

url='https://ssl.mail.163.com/entry/coremail/fcg/ntesdoor2?funcid=loginone&language=-1&passtype=1&iframe=1&product=mail163&from=web&df=email163&race=-2_45_-2_hz&module=&uid='+user+'&style=10&net=t&skinid=null',

data=postdata,

headers=self.header,

)

res = str(urllib2.urlopen(req).read())

#print res

patt = re.compile('sid=([^"]+)',re.I)

patt = patt.search(res)

uname = user.split('@')[0]

self.user = user

if patt:

self.sid = patt.group(1).strip()

#print self.sid

print '%s Login Successful.....'%(uname)

else:

print '%s Login failed....'%(uname)

def getInBox(self):

'''

获取邮箱列表

'''

print '\nGet mail lists.....\n'

sid = self.sid

url = self.mailBaseUrl+'/jy3/list/list.do?sid='+sid+'&fid=1&fr=folder'

res = urllib2.urlopen(url).read()

#获取邮件列表

mailList = []

patt = re.compile('

]+>.*?href="([^"]+)"[^>]+>(.*?).*?
]+>.*?href="[^>]+>(.*?)',re.I|re.S)

patt = patt.findall(res)

if patt==None:

return mailList

for i in patt:

line = {

'from':i[1].decode('utf8'),

'url':self.mailBaseUrl+i[0],

'subject':i[2].decode('utf8')

}

mailList.append(line)

return mailList

def getMailMsg(self,url):

'''

下载邮件内容

'''

content=''

print '\n Download.....%s\n'%(url)

res = urllib2.urlopen(url).read()

patt = re.compile('contentURL:"([^"]+)"',re.I)

patt = patt.search(res)

if patt==None:

return content

url = '%s%s'%(self.mailBaseUrl,patt.group(1))

time.sleep(1)

res = urllib2.urlopen(url).read()

Djson = json.JSONDecoder(encoding='utf8')

jsonRes = Djson.decode(res)

if 'resultVar' in jsonRes:

content = Djson.decode(res)['resultVar']

time.sleep(3)

return content

'''

Demon

'''

#初始化

mail163 = Email163()

#登录

mail163.login('xxxxx@163.com','xxxx')

time.sleep(2)

#获取收件箱

elist = mail163.getInBox()

#获取邮件内容

for i in elist:

print '主题:%s 来自:%s 内容:\n%s'%(i['subject'].encode('utf8'),i['from'].encode('utf8'),mail163.getMailMsg(i['url']).encode('utf8'))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现查收邮件读取邮件内容的功能,需要使用Python中的imaplib模块和email模块。以下是一个简单的示例代码: ```python import imaplib import email # 邮箱登录信息 IMAP_SERVER = 'imap.gmail.com' EMAIL_ACCOUNT = '[email protected]' EMAIL_PASSWORD = 'your_email_password' # 连接邮箱服务器 mail = imaplib.IMAP4_SSL(IMAP_SERVER) mail.login(EMAIL_ACCOUNT, EMAIL_PASSWORD) # 选择收件箱 mail.select("inbox") # 搜索邮件 result, data = mail.search(None, "ALL") # 遍历邮件 for num in data[0].split(): # 获取邮件内容 result, data = mail.fetch(num, "(RFC822)") raw_email = data[0][1] email_message = email.message_from_bytes(raw_email) # 获取邮件主题和发件人信息 subject = email_message['Subject'] sender = email.utils.parseaddr(email_message['From'])[1] # 输出邮件信息 print('From: %s' % sender) print('Subject: %s' % subject) # 获取邮件正文内容 if email_message.is_multipart(): for part in email_message.get_payload(): if part.get_content_type() == 'text/plain': body = part.get_payload(decode=True).decode('utf-8') print('Body: %s' % body) break else: body = email_message.get_payload(decode=True).decode('utf-8') print('Body: %s' % body) # 关闭邮箱连接 mail.close() mail.logout() ``` 这段代码会连接到Gmail的IMAP服务器,并遍历收件箱中的所有邮件。对于每一封邮件,它会输出发件人、主题和正文内容。请注意,这个示例代码仅适用于文本邮件,如果邮件包含HTML或附件,需要进行相应的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值