python接收邮件,如何用python发送邮件
之前给大家介绍过python,但是有朋友提出了疑问。既然能发,那能看吗?如果能用python实现,那将是一件非常有趣的事情,所以边肖也去打听了一下。下面给大家看看。大家看看吧~以下是具体的实施内容,很全面。请仔细阅读。
关于读取邮件:
邮件收集使用POP3协议;
邮件解析:你需要将收到的邮件转换成Email.message.Message对象,然后使用email模块解析内容。
读取邮件的实例·
1、·获取某封邮件的对象·
Importpoplibfrommail。parserimportparser pop pop host= pop . exmail . QQ.com user ADR= xx @ xx . cn user pwd=的服务器信息xxxxx
创建POP3对象并添加用户名和密码 pop 3 server=poplib . pop 3(pop host)pop 3 server . user(user ADR)pop 3 server . pass _(user pwd)
获取邮件的数量和空间 邮件计数,邮箱大小=pop3server.stat。
获取邮件请求的返回状态代码,每条消息的字节大小(b 第一条消息的字节大小),响应,msgnum octets,octets=pop3server.list。
获取任意消息的邮件对象[第一条消息的编号为1,不是0] msgIndex=random.randint (1,消息计数)print (msgindex) #获取第一条msgIndex
封邮件的信息response,msgLines,octets=pop3Server.retr(msgIndex)#msgLines中为该邮件的每行数据,先将内容连接成字符串,再转化为email.message.Message对象msgLinesToStr=b"\r\n".join(msgLines).decode("utf8","ignore")messageObject=Parser.parsestr(msgLinesToStr)print(messageObject)
"""终止POP3服务"""pop3Server.quit
2、解析邮件对象
3、获取邮件日期
msgDate=messageObject["date"]print(msgDate)
4、获取邮件发件人实名、邮箱地址
获取邮件实名时,名称一般是加密的,此时就需要对头文件进行解码才可获取它的实际内容
fromemail.headerimportdecode_headerdefdecodeMsgHeader(header):"""解码头文件:paramheader:需解码的内容:return:"""value,charset=decode_header(header)[0]ifcharset:value=value.decode(charset)returnvalue
fromemail.utilsimportparseaddrsenderContent=messageObject["From"]#parseaddr函数返回的是一个元组(realname,emailAddress)senderRealName,senderAdr=parseaddr(senderContent)#将加密的名称进行解码senderRealName=decodeMsgHeader(senderRealName)print(senderRealName)print(senderAdr)
5、获取邮件主题
获取的邮件的主题也是加密的,此时就需要对头文件进行解码才可获取它的实际内容。
msgHeader=messageObject["Subject"]#对头文件进行解码msgHeader=decodeMsgHeader(msgHeader)print(msgHeader)
6、获取邮件正文
一封邮件的正文内容,可能是由几部分构成,每部分的格式不同。
"""获取邮件正文内容"""msgBodyContents=ifmessageObject.is_multipart:#判断邮件是否由多个部分构成messageParts=messageObject.get_payload#获取邮件附载部分formessagePartinmessageParts:bodyContent=decodeBody(messagePart)ifbodyContent:msgBodyContents.append(bodyContent)else:bodyContent=decodeBody(messageObject)ifbodyContent:messageBodyContents.append(bodyContent)print(msgBodyContents)
defdecodeBody(msgPart):"""解码内容:parammsgPart:邮件某部分"""contentType=msgPart.get_content_type#判断邮件内容的类型,text/htmltextContent=""ifcontentType=='text/plain'orcontentType=='text/html':content=msgPart.get_payload(decode=True)charset=msgPart.get_charsetifcharsetisNone:contentType=msgPart.get('Content-Type','').lowerposition=contentType.find('charset=')ifposition>=0:charset=contentType[position+8:].stripifcharset:textContent=content.decode(charset)returntextContent
以上就是关于python邮件获取内容了,如需了解更多python实用知识,点击进入PyThon学习网教学中心。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。