python3.6邮件收发总结(搭建环境篇)

python可以通过SMTP服务器实现邮件收发

SMTP通讯的基本流程可以概括为以下几点:
1.连接SMTP服务器
2.登陆用户名和密码
3.发送指定邮件内容
4.退出SMTP连接
在我实现收发功能后,踩啦很多雷。希望吧过程总结一下,希望可以帮助需要学习的朋友少走点弯路。建议:
如果使用第三方邮件服务不要频繁的发送邮件 这是对服务商的尊重,不要增加服务器的负担。 还有如果你这么做,可能会被管理员盯上。
第一步 安装函数库。我的环境python 3.6.2 pytharm (32位)需要的库有smtplib、email,smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容);email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。用pytharm可以搜索到smtplib
在这里插入图片描述
如图:我的做法简单粗暴,全部装啦。可以运行。
email模块就不行了 python3.6中mail不是内置模块,所以需要手动安装,pycharm无法安装。解决方法:百度进入pypi搜索:下载
https://pypi.python.org/packages/bb/35/0aa85e06fc14fe86d4064f18ad05254ebc649e81235faf96d591b02158e9/email-6.0.0a1.tar.gz
进入你的python3.6目录在cmd窗口运行 python setup.py install
参考 https://blog.csdn.net/py_tester/article/details/78650930
在这里插入图片描述
解压后的文件
我的习惯是编一个bat文件执行新建一个文本文档输入:
python setup.py install,另存为run.bat点击文件运行(后缀名bat即可)。编译python使用bat文件编译调试下载是很方便的(Windows系统)这个以后总结
安装完毕,执行不会报错。
我在这个过程做了一件很蠢的事,就是把我的程序命名为email.py(绝对头晕),导致整个目录下文件调用email失败。显然命名冲突。
提示: No module named ‘email.mime’; ‘email’ is not a package
把文件重命名才能解决。

第二步 开通你的POP/IMAP服务。
需要一个绑定手机的邮箱,因为现在需要手机短信验证授权码。

授权码是用于登录第三方邮件客户端的专用密码。

POP/IMAP服务是运营商开放的服务器接口。连接SMTP服务器是运营商服务器名字。
163网易邮箱:smtp.163.com
公司内部邮箱:mail.xxxxx.com
qq邮箱:smtp.qq.com
注意:163、公司内部邮箱用25和465端口均可以发送邮件(SMTP对应25,可以省略;SMTP_SSL对应465不可以省略),而qq只能用smtplib.SMTP_SSL(host, 465)发送!
参考:https://blog.csdn.net/py_tester/article/details/78650930
登陆用户名和密码:用户名是你的邮箱名,密码是你获得的授权码
网易邮箱获取授权码的方式
在这里插入图片描述

其他网站实现很类似。更多设置参考
POP3设置
简单的发送 ,

import smtplib
from email.mime.text import MIMEText
mailserver = "smtp.163.com"  #邮箱服务器地址
username_send = '[email protected]'  #邮箱用户名
password = 'XXXX'   #邮箱密码:需要使用授权码
username_recv = '[email protected]'  #收件人,多个收件人用逗号隔开
mail = MIMEText('这是发用的邮件内容')
mail['Subject'] = '这是邮件主题'
mail['From'] = username_send  #发件人,注意这里,一定和smtp.sendmail参数一致,否则会报错
mail['To'] = username_recv  #收件人;[]里的三个是固定写法
smtp = smtplib.SMTP(mailserver,port=25) # 连接邮箱服务器,smtp的端口号是25
# smtp=smtplib.SMTP_SSL('smtp.qq.com',port=465) #QQ邮箱的服务器和端口号
smtp.login(username_send,password)  #登录邮箱
smtp.sendmail(username_send,username_recv,mail.as_string())# 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串
smtp.quit() # 发送完毕后退出smtp

下一篇详细介绍发送接受细节部分

猜你喜欢

转载自blog.csdn.net/weixin_39462002/article/details/83411886
今日推荐