Python如何实现邮件处理

本篇内容介绍了“Python如何实现邮件处理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

十多年的北林网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整北林建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“北林网站设计”,“北林网站推广”以来,每个客户项目都认真落实执行。

一、发送电子邮件

Python标准库提供了smtplib,用于实现SMTP协议发送邮件。标准库还提供email模块帮助我们构建邮件格式。SMTP(Simple Mail Transfer Protocol,即简单邮件传输协议),是一组有源地址到目的地址传送邮件的规则,用来控制信件的中转方式。

获取QQ邮箱密码(授权码)

二、发送纯文本格式的邮件

代码如下:

import smtplib

from email.mime.text import MIMEText
from email.header import Header

# 邮箱用户名
sender = 'dad@qq.com'(输入你的邮箱)
# 邮箱密码(部分邮箱为授权码)
password = '123456'(输入你的密码)
# 收件人邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
receiver = ['baby@qq.com', ](输入你要发送人的邮箱)
# 邮件正文
text = 'Hello,baby'
message = MIMEText(text, 'plain', 'utf-8')
# 发件人显式的名字
message['From'] = Header('拿头来坚持', 'utf-8')
# 收件人显式的名字
message['To'] = Header('baby', 'utf-8')
# 邮件标题
message['Subject'] = '爸爸来信,请接收!'

try:
    # 使用QQ企业邮箱服务器发送
    smtp = smtplib.SMTP('smtp.qq.com')
    # 登录
    smtp.login(sender, password)
    # 发送
    smtp.sendmail(sender, receiver, message.as_string())
    print('邮件发送成功!')
    # 退出服务器
    smtp.quit()
except smtplib.SMTPException as e:
    print('Error!邮件发送失败!', e)

Python基础分析之邮件处理

发送纯文本格式的邮件执行结果:

三、发送HTML格式的邮件

代码如下:

import smtplib

from email.mime.text import MIMEText
from email.header import Header

# 邮箱用户名
sender = 'dad@qq.com'(输入你的邮箱)
# 邮箱密码(部分邮箱为授权码)
password = '123456'(输入你的密码)
# 收件人邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
receiver = ['baby@qq.com', ](输入你要发送人的邮箱)
# 邮件正文
msg = '''
    

拿头来坚持

          Life goes on, learning goes on         

 
 22,574
 被访问量
 24 原创文章 128,997 作者排名 762 粉丝数量    于 2020-02-22 加入CSDN  获得成就                   
获得212次点赞
                        
内容获得111次评论
                        
获得562次收藏
      ''' # 指定消息体使用HTML格式 message = MIMEText(msg, 'html', 'utf-8') # 发件人显式的名字 message['From'] = Header('拿头来坚持', 'utf-8') # 收件人显式的名字 message['To'] = Header('baby', 'utf-8') # 邮件标题 message['Subject'] = '爸爸来信,请接收!' try:     # 使用QQ企业邮箱服务器发送     smtp = smtplib.SMTP('smtp.qq.com')     # 登录     smtp.login(sender, password)     # 发送     smtp.sendmail(sender, receiver, message.as_string())     print('邮件发送成功!')     # 退出服务器     smtp.quit() except smtplib.SMTPException as e:     print('Error!邮件发送失败!', e)

Python基础分析之邮件处理

发送HTML格式的邮件的执行结果:

四、发送带附件的邮件

代码如下:

import smtplib

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header

# 邮箱用户名
sender = 'dad@qq.com'(输入你的邮箱)
# 邮箱密码(部分邮箱为授权码)
password = '123456'(输入你的密码)
# 收件人邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
receiver = ['baby@qq.com', ](输入你要发送人的邮箱)
# 指定消息体使用复合类型
message = MIMEMultipart()
# 发件人显式的名字
message['From'] = Header('拿头来坚持', 'utf-8')
# 收件人显式的名字
message['To'] = Header('baby', 'utf-8')
# 邮件标题
message['Subject'] = '爸爸来信,请接收!'
# 邮件正文
msg = '''
    

拿头来坚持

          Life goes on, learning goes on         

  22,574 被访问量 24 原创文章 128,997 作者排名 762 粉丝数量    于 2020-02-22 加入CSDN  获得成就                   
获得212次点赞
                        
内容获得111次评论
                        
获得562次收藏
      ''' # 邮件附加html文件 message.attach(MIMEText(msg, 'html', 'utf-8')) # 添加附件 attached_file = MIMEText(open(__file__, encoding='utf-8').read(), 'base64', 'utf-8') # 指定附件的文件名和原先的文件不一样 attached_file['Content-Disposition'] = 'attachment;filename="mail.py"' # 邮件附加附件 message.attach(attached_file) try:     # 使用QQ企业邮箱服务器发送     smtp = smtplib.SMTP('smtp.qq.com')     # 登录     smtp.login(sender, password)     # 发送     smtp.sendmail(sender, receiver, message.as_string())     print('邮件发送成功!')     # 退出服务器     smtp.quit() except smtplib.SMTPException as e:     print('Error!邮件发送失败!', e)

Python基础分析之邮件处理

发送带附件的邮件执行结果:

五、发送图片的邮件

代码如下:

import smtplib

from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.header import Header

# 邮箱用户名
sender = 'dad@qq.com'(输入你的邮箱)
# 邮箱密码(部分邮箱为授权码)
password = '123456'(输入你的密码)
# 收件人邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
receiver = ['baby@qq.com', ](输入你要发送人的邮箱)
# 利用related定义内嵌资源的邮件体
message = MIMEMultipart('related')
# 发件人显式的名字
message['From'] = Header('拿头来坚持', 'utf-8')
# 收件人显式的名字
message['To'] = Header('baby', 'utf-8')
# 邮件标题
message['Subject'] = '爸爸来信,请接收!'
# 邮件正文
content = MIMEMultipart('alternative')
# html内容
msg = '''
    

拿头来坚持

          Life goes on, learning goes on     

    拿头来坚持的个人主页          

      ''' # 邮件附加html文件 message.attach(MIMEText(msg, 'html', 'utf-8')) # 添加图片 with open('csdn.png', 'rb') as f:     img01 = MIMEImage(f.read()) # 定义资源的名字为img01 img01.add_header('Content-ID', 'img01') # 邮件附加图片 message.attach(img01) try:     # 使用QQ企业邮箱服务器发送     smtp = smtplib.SMTP('smtp.qq.com')     # 登录     smtp.login(sender, password)     # 发送     smtp.sendmail(sender, receiver, message.as_string())     print('邮件发送成功!')     # 退出服务器     smtp.quit() except smtplib.SMTPException as e:     print('Error!邮件发送失败!', e)

Python基础分析之邮件处理

发送图片的邮件执行结果:

六、接收电子邮件

接受邮件有两种常用的协议:POP3和IMAP协议

POP3协议(Post Office Protocol-Version3,即邮局协议版本3):允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等)不会反馈到服务器上,比如通过客户端收取了邮箱的3封邮件并移动到其他文件夹,邮件服务器上的这些邮件不会被同步移动。

IMAP协议(Internet Mail Access Protocol,即Internet邮件访问协议):提供Webmail与电子邮件客户端之间的双向通信,任何在客户端做的改变都会同步到服务器上。在客户端对邮件进行了操作,服务器上的邮件也会进行相应的操作。

七、使用POP3协议下载邮件

代码如下:

import poplib

from email.parser import Parser

# 登录邮箱的用户名
username = 'baby@qq.com'(输入你的邮箱)
# 登录邮箱的密码(部分邮箱为授权码)
password = '123456'(输入你的密码)
# 连接邮箱服务器
pop_server = poplib.POP3('pop.qq.com')
# 打印出邮箱服务器的欢迎文字
print(pop_server.getwelcome())
# 登录邮箱服务器
pop_server.user(username)
pop_server.pass_(password)
# 打印出当前账号的状态,第一个返回值为邮件数,第二个返回值为占用空间
print('Server stat', pop_server.stat())
# 获取所以邮件列表
resp, mails, octets = pop_server.list()
print(mails)
# 获取最新的一封邮件(序列号最大的),邮件索引从1开始计数
index = len(mails)
resp, lines, octets = pop_server.retr(index)
content = b'\r\n'.join(lines).decode('utf-8')
# 解析出邮件
msg = Parser().parsestr(content)
# 可以根据邮件索引号直接从服务器删除邮件
# pop_server.dele(index)
# 关闭连接
pop_server.quit()

Python基础分析之邮件处理

执行结果:

b'+OK XMail POP3 Server v1.0 Service Ready(XMail v1.0)'
Server stat (15, 50814)
[b'1 1255', b'2 1286', b'3 1310', b'4 1398', b'5 1458', b'6 1450', b'7 1602', b'8 1633', b'9 5001', b'10 2347', b'11 2371', b'12 2267', b'13 5033', b'14 5077', b'15 17326']

“Python如何实现邮件处理”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


网站栏目:Python如何实现邮件处理
转载来于:http://ybzwz.com/article/jjsegd.html