当前位置: 首页 > news >正文

郑州外语网站建站优化取消wordpress 黑标题

郑州外语网站建站优化,取消wordpress 黑标题,模板形的网站制作,网站开发工程师年薪多少poplib模块接收邮件python的poplib模块是用来从pop3收取邮件的#xff0c;也可以说它是处理邮件的第一步。POP3协议并不复杂#xff0c;它也是采用的一问一答式的方式#xff0c;你向服务器发送一个命令#xff0c;服务器必然会回复一个信息。pop3命令码如下#xff1a;命…poplib模块接收邮件python的poplib模块是用来从pop3收取邮件的也可以说它是处理邮件的第一步。POP3协议并不复杂它也是采用的一问一答式的方式你向服务器发送一个命令服务器必然会回复一个信息。pop3命令码如下命令 poplib方法  参数    状态     描述-----------------------------------------------------------------------------------------------USER  user   username  认可  用户名此命令与下面的pass命令若成功将导致状态转换PASS  pass_   password  认可  用户密码APOP  apop   Name,Digest 认可  Digest是MD5消息摘要-----------------------------------------------------------------------------------------------STAT  stat   None    处理  请求服务器发回关于邮箱的统计资料如邮件总数和总字节数UIDL  uidl   [Msg#]   处理  返回邮件的唯一标识符POP3会话的每个标识符都将是唯一的LIST  list   [Msg#]   处理  返回邮件数量和每个邮件的大小RETR  retr   [Msg#]  处理  返回由参数标识的邮件的全部文本DELE  dele   [Msg#]  处理  服务器将由参数标识的邮件标记为删除由quit命令执行RSET  rset   None   处理  服务器将重置所有标记为删除的邮件用于撤消DELE命令TOP   top    [Msg#]   处理  服务器将返回由参数标识的邮件前n行内容n必须是正整数NOOP  noop   None    处理  服务器返回一个肯定的响应----------------------------------------------------------------------------------------------QUIT  quit  None    更新python的poplib也针对这些命令分别提供了对应的方法,上面在第二列里已经标出来。收取邮件的过程一般是1. 连接pop3服务器 (poplib.POP3.__init__)2. 发送用户名和密码进行验证 (poplib.POP3.user poplib.POP3.pass_)3. 获取邮箱中信件信息 (poplib.POP3.stat)4. 收取邮件 (poplib.POP3.retr)5. 删除邮件 (poplib.POP3.dele)6. 退出 (poplib.POP3.quit)注意的是上面我在括号里写的是使用什么方法来完成这个操作在实际的代码中不能那样写应该是创建poplib.POP3的对象然后调用这个对象的方法。比如poplib.POP3.quit应该理解为a poplib.POP3(host)a.quit()下面看看实际的代码#-*- encoding: gb2312 -*-import os, sys, stringimport poplib# pop3服务器地址host pop3.163.com# 用户名username xxxxxx163.com# 密码password xxxxxxx# 创建一个pop3对象这个时候实际上已经连接上服务器了pp poplib.POP3(host)# 设置调试模式可以看到与服务器的交互信息pp.set_debuglevel(1)# 向服务器发送用户名pp.user(username)# 向服务器发送密码pp.pass_(password)# 获取服务器上信件信息返回是一个列表第一项是一共有多上封邮件第二项是共有多少字节ret pp.stat()print ret# 需要取出所有信件的头部信件id是从1开始的。for i in range(1, ret[0]1):# 取出信件头部。注意top指定的行数是以信件头为基数的也就是说当取0行# 其实是返回头部信息取1行其实是返回头部信息之外再多1行。mlist pp.top(i, 0)print line: , len(mlist[1])# 列出服务器上邮件信息这个会对每一封邮件都输出id和大小。不象stat输出的是总的统计信息ret pp.list()print ret# 取第一封邮件完整信息在返回值里是按行存储在down[1]的列表里的。down[0]是返回的状态信息down pp.retr(1)print lines:, len(down)# 输出邮件for line in down[1]:print line# 退出pp.quit()在有些地方有安全邮件这一说其实是对pop3做了ssl加密。这样的poplib一样可以处理只不过不是用POP3这个类而是用POP3_SSL, 他们的方法都一样。因此支持ssl在上面代码中替换创建pop3对象的一行为pp poplib.POP3_SSL(host)smtplib: 用python发送SSL/TLS安全邮件python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。smtp协议的基本命令包括HELO 向服务器标识用户身份MAIL 初始化邮件传输 mail from:RCPT 标识单个的邮件接收人常在MAIL命令后面,可有多个rcpt to:DATA 在单个或多个RCPT命令后,表示所有的邮件接收人已标识,并初始化数据传输,以.结束VRFY 用于验证指定的用户/邮箱是否存在由于安全方面的原因,服务器常禁止此命令EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用HELP 查询服务器支持什么命令NOOP 无操作,服务器应响应OKQUIT 结束会话RSET 重置会话,当前传输被取消MAIL FROM 指定发送者地址RCPT TO 指明的接收者地址一般smtp会话有两种方式一种是邮件直接投递就是说比如你要发邮件給zzz163.com那就直接连接163.com的邮件服务器把信投給zzz163.com; 另一种是验证过后的发信它的过程是比如你要发邮件給zzz163.com你不是直接投到163.com而是通过自己在sina.com的另一个邮箱来发。这样就要先连接sina.com的smtp服务器然后认证之后在把要发到163.com的信件投到sina.com上sina.com会帮你把信投递到163.com。第一种方式的命令流程基本是这样1. helo2. mail from3. rcpt to4. data5. quit但是第一种发送方式一般有限制的就是rcpt to指定的这个邮件接收者必须在这个服务器上存在否则是不会接收的。 先看看代码#-*- encoding: gb2312 -*-import os, sys, stringimport smtplib# 邮件服务器地址mailserver smtp.163.com# smtp会话过程中的mail from地址from_addr asfgysgzxsdf.com# smtp会话过程中的rcpt to地址to_addr zhaoweikid163.com# 信件内容msg test mailsvr smtplib.SMTP(mailserver)# 设置为调试模式就是在会话过程中会有输出信息svr.set_debuglevel(1)# helo命令docmd方法包括了获取对方服务器返回信息svr.docmd(HELO server)# mail from, 发送邮件发送者svr.docmd(MAIL FROM: % from_addr)# rcpt to, 邮件接收者svr.docmd(RCPT TO: % to_addr)# data命令开始发送数据svr.docmd(DATA)# 发送正文数据svr.send(msg)# 比如以 . 作为正文发送结束的标记,用send发送的所以要用getreply获取返回信息svr.send( . )svr.getreply()# 发送结束退出svr.quit()注意的是163.com是有反垃圾邮件功能的想上面的这种投递邮件的方法不一定能通过反垃圾邮件系统的检测的。所以一般不推荐个人这样发送。第二种有点不一样1.ehlo2.auth login3.mail from4.rcpt to5.data6.quit相对于第一种来说多了一个认证过程就是auth login这个过程。#-*- encoding: gb2312 -*-import os, sys, stringimport smtplibimport base64# 邮件服务器地址mailserver smtp.163.com# 邮件用户名username xxxxxx163.com# 密码password xxxxxxx# smtp会话过程中的mail from地址from_addr xxxxxx163.com# smtp会话过程中的rcpt to地址to_addr yyyyyy163.com# 信件内容msg my test mailsvr smtplib.SMTP(mailserver)# 设置为调试模式就是在会话过程中会有输出信息svr.set_debuglevel(1)# ehlo命令docmd方法包括了获取对方服务器返回信息svr.docmd(EHLO server)# auth login 命令svr.docmd(AUTH LOGIN)# 发送用户名是base64编码过的用send发送的所以要用getreply获取返回信息svr.send(base64.encodestring(username))svr.getreply()# 发送密码svr.send(base64.encodestring(password))svr.getreply()# mail from, 发送邮件发送者svr.docmd(MAIL FROM: % from_addr)# rcpt to, 邮件接收者svr.docmd(RCPT TO: % to_addr)# data命令开始发送数据svr.docmd(DATA)# 发送正文数据svr.send(msg)# 比如以 . 作为正文发送结束的标记svr.send( . )svr.getreply()# 发送结束退出svr.quit()上面说的是最普通的情况但是不能忽略的是现在好多企业邮件是支持安全邮件的就是通过SSL发送的邮件这个怎么发呢SMTP对SSL安全邮件的支持有两种方案一种老的是专门开启一个465端口来接收ssl邮件另一种更新的做法是在标准的25端口的smtp上增加一个starttls的命令来支持。看看第一种怎么办:#-*- encoding: gb2312 -*-import os, sys, string, socketimport smtplibclass SMTP_SSL (smtplib.SMTP):def __init__(self, host, port465, local_hostnameNone, keyNone, certNone):self.cert certself.key keysmtplib.SMTP.__init__(self, host, port, local_hostname)def connect(self, hostlocalhost, port465):if not port and (host.find(:) host.rfind(:)):i host.rfind(:)if i 0:host, port host[:i], host[i1:]try: port int(port)except ValueError:raise socket.error, nonnumeric portif not port: port 654if self.debuglevel 0: printstderr, connect:, (host, port)msg getaddrinfo returns an empty listself.sock Nonefor res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM):af, socktype, proto, canonname, sa restry:self.sock socket.socket(af, socktype, proto)if self.debuglevel 0: printstderr, connect:, (host, port)self.sock.connect(sa)# 新增加的创建ssl连接sslobj socket.ssl(self.sock, self.key, self.cert)except socket.error, msg:if self.debuglevel 0:printstderr, connect fail:, (host, port)if self.sock:self.sock.close()self.sock Nonecontinuebreakif not self.sock:raise socket.error, msg# 设置sslself.sock smtplib.SSLFakeSocket(self.sock, sslobj)self.file smtplib.SSLFakeFile(sslobj);(code, msg) self.getreply()if self.debuglevel 0: printstderr, connect:, msgreturn (code, msg)if __name__ __main__:smtp SMTP_SSL(192.168.2.10)smtp.set_debuglevel(1)smtp.sendmail(zzzxxx.com, zhaoweizhaowei.com, xxxxxxxxxxxxxxxxx)smtp.quit()这里我是从原来的smtplib.SMTP派生出了新的SMTP_SSL类它专门来处理ssl连接。我这里测试的192.168.2.10是我自己的测试服务器.第二种是新增加了starttls的命令这个很简单smtplib里就有这个方法叫smtplib.starttls()。当然不是所有的邮件系统都支持安全邮件的这个需要从ehlo的返回值里来确认如果里面有starttls才表示支持。相对于发送普通邮件的第二种方法来说只需要新增加一行代码就可以了:#-*- encoding: gb2312 -*-import os, sys, stringimport smtplibimport base64# 邮件服务器地址mailserver smtp.163.com# 邮件用户名username xxxxxx163.com# 密码password xxxxxxx# smtp会话过程中的mail from地址from_addr xxxxxx163.com# smtp会话过程中的rcpt to地址to_addr yyyyyy163.com# 信件内容msg my test mailsvr smtplib.SMTP(mailserver)# 设置为调试模式就是在会话过程中会有输出信息svr.set_debuglevel(1)# ehlo命令docmd方法包括了获取对方服务器返回信息如果支持安全邮件返回值里会有starttls提示svr.docmd(EHLO server)svr.starttls() # # auth login 命令svr.docmd(AUTH LOGIN)# 发送用户名是base64编码过的用send发送的所以要用getreply获取返回信息svr.send(base64.encodestring(username))svr.getreply()# 发送密码svr.send(base64.encodestring(password))svr.getreply()# mail from, 发送邮件发送者svr.docmd(MAIL FROM: % from_addr)# rcpt to, 邮件接收者svr.docmd(RCPT TO: % to_addr)# data命令开始发送数据svr.docmd(DATA)# 发送正文数据svr.send(msg)# 比如以 . 作为正文发送结束的标记svr.send( . )svr.getreply()# 发送结束退出svr.quit()注意 以上的代码为了方便我都没有判断返回值严格说来是应该判断一下返回的代码的在smtp协议中只有返回代码是2xx或者3xx才能继续下一步返回4xx或5xx的都是出错了。
http://www.pierceye.com/news/88348/

相关文章:

  • 网站建设需要摊销吗网站开发html5技术
  • 传奇服务器如何做网站企业做网站大概需要多少钱
  • 不提供花架子网站 我如何知道一个网站的流量
  • 怎么套模板 网站网站建设课程改进建议
  • 网站建设参考书籍wordpress详情页介绍位置调整
  • 黄石网站建网站如何添加js代码
  • 专业做网站哪里有蚌山网站建设
  • 静海商城网站建设工作简历模板免费下载
  • 网站建设征求意见通知滨州建设厅网站
  • 网站标题 关键字怎么设置代码做进口产品的网站
  • 泰安如何选择网站建设中国建筑集团有限公司官网子公司
  • 如何生成短链接广西新站seo
  • 简历模板免费网站wordpress 导出用户
  • 怎样做网站吸引人手机app前端开发工具
  • 秦皇岛市做网站优化特色的合肥网站建设
  • 盐山做网站的网站开发团队简介
  • 哈尔滨市呼兰区住房城乡建设局网站微信小程序做直播网站
  • 个人买卖网站如何做如何用代码做分数查询的网站
  • 网络设备互联课设建设企业网站wordpress扁平化博客主题
  • 公司做网站的费用怎么入账如何仿制wordpress网站
  • 动易网站后台广告设计公司
  • 国内搜索引擎网站国外有哪些网站做推广的比较好
  • 网站源码angular做的网站
  • 什么是ui设计师最新黑帽seo教程
  • 手机如何做网站百度关键词竞价排名
  • 佛山手机网站建设做响应式网站对设计图的要求
  • sz住房和城乡建设部网站在线flash相册网站源码
  • 网站开发工具 n优秀网站建设空间
  • 做攻略的网站做gif动态图网站
  • 营销型网站设计公司哪里有网站研发进度表下载