美文网首页
python学习笔记-项目开发流程&电子邮件的发送与读取

python学习笔记-项目开发流程&电子邮件的发送与读取

作者: 潇涵quant | 来源:发表于2016-07-11 18:33 被阅读73次

项目开发步骤

当接到一个项目时,应该怎么做? 
1. 需求分析:需求分析报告,可行性分析报告;功能
2. 设计:需要哪些模块,模块名,模块功能
3. 编写:模块全部转化为代码
4. 测试:能否使用;是否容易崩溃
5. 使用:交付客户;投入运营
6. 维护:升级;bug的解决

需求分析

目的;范围;定义;功能
误区:不是经济学中的需求

可以去网上下载需求分析报告,了解。

小知识

import os 
os.system('shutdown -s -t 1') #关机
os.system('shutdown -r') #重启

维护与改善

备份旧版本的代码;
对旧版本的代码进行更改。

远程电子邮件

选择远程控制渠道

可以是网页,电子邮件,qq等

电子邮件

发送电子邮件

#电子邮件的操作
import poplib #读取邮件的库
import smtplib #主要用于发送邮件
from email.header import decode_header
from email.mime.text import MIMEText #设置邮件内容
import email

#如何登陆邮箱
#按目的分为是为发送邮件而登陆还是为读取邮件而登陆
#先说为发送邮件而登陆的操作。一般来说,发送用SMTP,接收使用POP

sent = smtplib.SMTP('smtp.sina.com') #设置SMTP服务器
sent.login('xxxx_quant@sina.com','mySecretCode')#填的是独立密码

#发送邮件
#已登录,设置发送内容与发送
to = ['xxxxx_quant@sina.com','xxxxxx@qq.com']
content = MIMEText('hello,xxx') #MIMEText的参数代表邮件的具体内容
content['Subject'] = 'hello'    #设置邮件标题
content['From'] = 'xxxx_quant@sina.com' #设置邮件来源
content['To'] = ','.join(to) #发往哪里,每个元素用逗号隔开(可群发)
#设置完成,开始发送
sent.sendmail('xxxxx_quant@sina.com',to,content.as_string()) #发送邮箱;发送哪些邮箱,邮件内容
sent.close() #关闭邮箱

读取邮件

import poplib
import smtplib
from email.mime.text import MIMEText
from email.header import decode_header
import email

#读取邮件

read = poplib.POP3('pop.sina.com') #服务器设置
read.user('xxxxx_quant@sina.com') #登陆账号
read.pass_('MyPassword') #登陆密码,pass要加_,不能和关键字pass冲突
tongji = read.stat() #返回邮箱的基本统计信息
#print(tongji) #(1, 927) 1是邮件总数,927代表邮箱总字节数

#读第一封邮件
str1 = read.top(tongji[0],0) #服务器讲返回由参数标识的邮件前0行内容(肉眼无法识别).
#print(str1)  返回三个参数,[1]对我们有用,它是个列表
str2 = []
#先编码,再解码
#编码
for x in str1[1]:
    try:
        str2.append(x.decode())
    except:
        try:
            str2.append(x.decode('gbk'))
        except:
            str2.append(x.decode('big5'))
#print(str2)
#解码
#先把str2转化成实例
msg = email.message_from_string('\n'.join(str2))#把String的邮件转换成email.message实例
#msg是把经过编码的str2转化为可识别的邮件信息,并且每行一个信息,join用来连接字符串
biaoti = decode_header(msg['subject'])#返回一个只有一个元素的list,里边是个元组(两个元素)
#print(biaoti) #[('hello', None)]
if biaoti[0][1]:#如果有第二个元素,说明有编码信息
    biaoti2 = biaoti[0][0].decode(biaoti[0][1])#用编码信息来解码[0][0]
else:
    biaoti2 = biaoti[0][0]
print(biaoti2)

发现个问题,就是上面的这些代码connect后都是有一定时间的,在一定时间内部操作就会被refuse了。

软件工程的思维方法

模块思维,初步设计,详细设计

相关文章

网友评论

      本文标题:python学习笔记-项目开发流程&电子邮件的发送与读取

      本文链接:https://www.haomeiwen.com/subject/wmoljttx.html