博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 收发邮件
阅读量:6680 次
发布时间:2019-06-25

本文共 2431 字,大约阅读时间需要 8 分钟。

发邮件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#encoding=utf-8
 
import 
smtplib
from 
email.mime.text 
import 
MIMEText
from 
email.mime.image 
import 
MIMEImage
from 
email.mime.multipart 
import 
MIMEMultipart
 
if 
__name__ 
=
= 
'__main__'
:
        
fromaddr 
= 
'BuGaoSuNi@163.com'
        
toaddrs 
= 
[
'136xxxx1475@139.com'
'xxxx@xx.com'
]
        
subject 
= 
'smtplib test.'
 
        
content 
= 
'smtplib test: hello, smtplib ! Can you see it ?'
        
textApart 
= 
MIMEText(content)
 
        
imageFile 
= 
'/tmp/code2.png'
        
imageApart 
= 
MIMEImage(
file
(imageFile, 
'rb'
).read(), imageFile.split(
'.'
)[
-
1
])
        
imageApart.add_header(
'Content-Disposition'
'attachment'
, filename
=
imageFile.split(
'/'
)[
-
1
])
 
        
= 
MIMEMultipart()
        
m.attach(textApart)
        
m.attach(imageApart)
        
m[
'Subject'
= 
subject
 
        
server 
= 
smtplib.SMTP(
'smtp.163.com'
)
        
server.login(fromaddr,
'BuGaoSuNi'
)
        
server.sendmail(fromaddr, toaddrs, m.as_string())
        
server.quit()

收邮件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#encoding=utf-8
import 
poplib
import 
email
 
if 
__name__ 
=
= 
'__main__'
:
        
= 
poplib.POP3(
'pop.163.com'
)
        
M.user(
'BuGaoSuNi@163.com'
)  
        
M.pass_(
'BuGaoSuNi'
)
    
        
#打印有多少封信  
        
numMessages 
= 
len
(M.
list
()[
1
])  
        
print 
'num of messages'
, numMessages  
 
    
        
#从最老的邮件开始遍历
        
for 
in 
range
(numMessages):
                
= 
M.retr(i
+
1
)
                
msg 
= 
email.message_from_string(
'\n'
.join(m[
1
]))
                
#allHeaders = email.Header.decode_header(msg)
                
aimHeaderStrs 
= 
{
'from'
:'
', '
to
':'
', '
subject
':'
'}
                
for 
aimKey 
in 
aimHeaderStrs.keys():
                        
aimHeaderList 
= 
email.Header.decode_header(msg[aimKey])
                        
for 
tmpTuple 
in 
aimHeaderList:
                                
if 
tmpTuple[
1
=
= 
None
:
                                        
aimHeaderStrs[aimKey] 
+
= 
tmpTuple[
0
]
                                
else
:
                                        
aimHeaderStrs[aimKey] 
+
= 
tmpTuple[
0
].decode(tmpTuple[
1
]) 
#转成unicode
                
for 
aimKey 
in 
aimHeaderStrs.keys():
                        
print 
aimKey,
':'
,aimHeaderStrs[aimKey].encode(
'utf-8'
#转成utf-8显示
 
                
for 
part 
in 
msg.walk(): 
#遍历所有payload
                        
contenttype 
= 
part.get_content_type()
                        
filename 
= 
part.get_filename()
                        
if 
filename: 
#and contenttype=='application/octet-stream':
                                
#保存附件
                                
data 
= 
part.get_payload(decode
=
True
)
                                
file
(
"mail%d.attach.%s" 
% 
(i
+
1
,filename),
'wb'
).write(data)
                        
elif 
contenttype 
=
= 
'text/plain'
:
                                
#保存正文
                                
data 
= 
part.get_payload(decode
=
True
)
                                
charset 
= 
part.get_content_charset(
'ios-8859-1'
)
                                
file
(
'mail%d.txt' 
% 
(i
+
1
), 
'w'
).write(data.decode(charset).encode(
'utf-8'
))
本文转自 Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1919745

转载地址:http://aliao.baihongyu.com/

你可能感兴趣的文章
Android优化——UI优化(二) 使用include标签复用布局
查看>>
JdbcTemplate+PageImpl实现多表分页查询
查看>>
如何快速的呈现我们的网页(转)
查看>>
镁客网张培青演讲实录:从VR发展看关键技术的变与不变
查看>>
oracle数据类型varchar2和varchar的区别
查看>>
早期(编译器)优化
查看>>
DIY一个DNS查询器:程序实现
查看>>
使用Dmitry Sklyarov的方法来破解一款流行的4G调制解调器
查看>>
获取请求参数js代码
查看>>
java面试-深入理解JVM(二)——揭开HotSpot对象创建的奥秘
查看>>
跟小静读CLR via C#(13)-浅谈事件
查看>>
图像滤镜艺术---乐高像素拼图特效
查看>>
读书笔记--101个shell脚本 之#9
查看>>
Redis 内存管理与事件处理
查看>>
iOS安全–IOS应用调试检测以及反调试
查看>>
备份策略
查看>>
Exchange 2013之(八)边缘传输服务器高可用
查看>>
网站静态化处理
查看>>
热烈祝贺道普测评荣获2017全国大学生软件测试大赛最佳组织奖
查看>>
yarn模式运行spark作业所有属性详解
查看>>