• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python基础详解之邮件处理

python 搞代码 4年前 (2022-01-07) 36次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要介绍了Python基础详解之邮件处理,文中有非常详细的代码示例,对正在学习python基础的小伙伴们有非常好的帮助,需要的朋友可以参考下

一、发送电子邮件

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

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

 

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

 import smtplib from email.mime.text import MIMEText from email.header import Header # 邮箱用户名 sender = '[email protected]'(输入你的邮箱) # 邮箱密码(部分邮箱为授权码) password = '123456'(输入你的密码) # 收件人邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发 receiver = ['[email protected]', ](输入你要发送人的邮箱) # 邮件正文 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<b style="color:transparent">来源gao@!dai!ma.com搞$$代^@码!网</b>.com') # 登录 smtp.login(sender, password) # 发送 smtp.sendmail(sender, receiver, message.as_string()) print('邮件发送成功!') # 退出服务器 smtp.quit() except smtplib.SMTPException as e: print('Error!邮件发送失败!', e) 

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

三、发送HTML格式的邮件

 import smtplib from email.mime.text import MIMEText from email.header import Header # 邮箱用户名 sender = '[email protected]'(输入你的邮箱) # 邮箱密码(部分邮箱为授权码) password = '123456'(输入你的密码) # 收件人邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发 receiver = ['[email protected]', ](输入你要发送人的邮箱) # 邮件正文 msg = ''' <p>拿头来坚持</p> Life goes on, learning goes on </p></div></div><div class="user-profile-head-info-b"><ul><li><div class="user-profile-statistics-num">22,574</div><div class="user-profile-statistics-name">被访问量</div></li><li><div class="user-profile-statistics-num">24</div><div class="user-profile-statistics-name">原创文章</div></li><li><div class="user-profile-statistics-num">128,997</div><div class="user-profile-statistics-name">作者排名</div></li><li><div class="user-profile-statistics-num">762</div><div class="user-profile-statistics-name">粉丝数量</div></li></ul></div></div></div><div class="user-profile-body"><div class="user-profile-body-inner"><div class="user-profile-body-left"><div class="user-profile-aside"><div class="user-general-info single-general-info"><ul><li class="user-general-info-join-csdn"><i></i><span>于</span><span class="user-general-info-key-word">2020-02-22</span><span>加入CSDN</span></li></ul></div><div class="user-achievement user-profile-aside-common-box"><div class="aside-common-box-head">获得成就</div><div class="aside-common-box-bottom"><div class="aside-common-box-content"><ul><li> <i></i><div>获得<span>212</span>次点赞</div></li><li> <i></i><div>内容获得<span>111</span>次评论</div></li><li> <i></i><div>获得<span>562</span>次收藏</div> ''' # 指定消息体使用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) 

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

四、发送带附件的邮件

 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header # 邮箱用户名 sender = '[email protected]'(输入你的邮箱) # 邮箱密码(部分邮箱为授权码) password = '123456'(输入你的密码) # 收件人邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发 receiver = ['[email protected]', ](输入你要发送人的邮箱) # 指定消息体使用复合类型 message = MIMEMultipart() # 发件人显式的名字 message['From'] = Header('拿头来坚持', 'utf-8') # 收件人显式的名字 message['To'] = Header('baby', 'utf-8') # 邮件标题 message['Subject'] = '爸爸来信,请接收!' # 邮件正文 msg = ''' <p>拿头来坚持</p> Life goes on, learning goes on </p></div></div><div class="user-profile-head-info-b"><ul><li><div class="user-profile-statistics-num">22,574</div><div class="user-profile-statistics-name">被访问量</div></li><li><div class="user-profile-statistics-num">24</div><div class="user-profile-statistics-name">原创文章</div></li><li><div class="user-profile-statistics-num">128,997</div><div class="user-profile-statistics-name">作者排名</div></li><li><div class="user-profile-statistics-num">762</div><div class="user-profile-statistics-name">粉丝数量</div></li></ul></div></div></div><div class="user-profile-body"><div class="user-profile-body-inner"><div class="user-profile-body-left"><div class="user-profile-aside"><div class="user-general-info single-general-info"><ul><li class="user-general-info-join-csdn"><i></i><span>于</span><span class="user-general-info-key-word">2020-02-22</span><span>加入CSDN</span></li></ul></div><div class="user-achievement user-profile-aside-common-box"><div class="aside-common-box-head">获得成就</div><div class="aside-common-box-bottom"><div class="aside-common-box-content"><ul><li> <i></i><div>获得<span>212</span>次点赞</div></li><li> <i></i><div>内容获得<span>111</span>次评论</div></li><li> <i></i><div>获得<span>562</span>次收藏</div> ''' # 邮件附加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) 

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

五、发送图片的邮件

 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 = '[email protected]'(输入你的邮箱) # 邮箱密码(部分邮箱为授权码) password = '123456'(输入你的密码) # 收件人邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发 receiver = ['[email protected]', ](输入你要发送人的邮箱) # 利用related定义内嵌资源的邮件体 message = MIMEMultipart('related') # 发件人显式的名字 message['From'] = Header('拿头来坚持', 'utf-8') # 收件人显式的名字 message['To'] = Header('baby', 'utf-8') # 邮件标题 message['Subject'] = '爸爸来信,请接收!' # 邮件正文 content = MIMEMultipart('alternative') # html内容 msg = ''' <p>拿头来坚持</p> Life goes on, learning goes on <p> 拿头来坚持的个人主页 </p> ''' # 邮件附加html文件 message.attach(MIMEText(msg, 'html', 'utf-8')) # 添加图片 with open('csdn.png-600', '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) 

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

六、接收电子邮件

接受邮件有两种常用的协议: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 = '[email protected]'(输入你的邮箱) # 登录邮箱的密码(部分邮箱为授权码) 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() 

执行结果:

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′]

如果正确连接上服务器并且列出邮件数量,说明我们已经正确使用了POP3协议。

到此这篇关于Python基础详解之邮件处理的文章就介绍到这了,更多相关python邮件处理内容请搜索gaodaima搞代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持gaodaima搞代码网

以上就是Python基础详解之邮件处理的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python基础详解之邮件处理

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址