如果你非要考虑输错密码的情形,使其能在输错密码断开连接后,自动重新建立新的连接,则可以在输入密码部分使用try来捕获SMTPServerDisconnected异常。当异常被触发时,建立新的连接即可。
这个实现起来非常容易,主要分为2步,首先控制摄像头拍照,然后将拍到的照片作为邮件附件发送就行,下面我简单介绍一下实现过程,实验环境win7+python3.6+pycharm5.0,主要内容如下:控制摄像头拍照
这里我们直接使用opencv的python接口包就行,借助于opencv强大的功能,我们只需要很少量的代码就可以实现摄像头拍照的功能,具体步骤如下:
1.首先,安装opencv-python模块,这个直接在cmd窗口输入命令“pip install opencv-python”就行,如下,很快就能安装成功:
2.安装完成后,我们就可以编写代码来实现控制摄像头拍照的功能了,测试代码如下,非常简单,打开摄像头,按帧播放,当按下q键时保存图片并退出,当前目录下就会出现拍到的照片,后面就是将这个照片作为邮件附件进行发送:
发送邮件
这里以发送163邮件为例,主要用到Python自带的smtplib模块,专门用于发送邮件,具体步骤如下:
1.首先,需要开启开启邮箱POP3/SMTP服务,这个直接登录邮箱,在上面菜单栏点击“设置”,勾选POP3/SMPT服务就行,如下:
接着点击左边管理列表的“客户端授权密码”,设置授权密码,后面的python代码中需要借助这个密码才能登陆邮箱服务器发送邮件:
2.一切设置完成后,我们就可以直接编写代码来发送带有照片的邮件了,测试代码如下,非常简单,只需要在邮件中attach一下照片就行,函数输入参数分别为发送人邮箱、密码、接收人邮件列表、主题、内容和附件名称:
运行这个程序,邮件就可以正常发送,并且可以看到发送的照片附件,如下:
至此,我们就完成了利用python来控制摄像头拍照并发送邮件。总的来说,整个过程不难,思路也比较清晰,只要你有一定的python基础,熟悉一下上面的代码,多调试几遍程序,很快就能掌握的,网上也有相关教程和资料,非常丰富详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言。
1、准备两个邮箱帐号,一个是常用的(接收端),另一个可以注册网易163邮箱或者foxmail邮箱也可(发送端),本次我使用两个QQ邮箱进行演示。
2、在邮箱的设置
3、账户中开启SMTP功能,如下图:
4、点击生成授权码,按照弹出窗口的提示发送短信,发送后单击我已发送按钮。
5、将生成的授权码复制下来以备接下来使用。如下图:
6、我们来编辑代码:
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr,formataddr
import smtplib
def _format_addr(s):
name,addr = parseaddr(s)
return formataddr((Header(name,'utf-8').encode(),addr))
#发件人地址
from_addr = '10******[email protected]'
#密码刚才复制的邮箱的授权码
password = 'u*******************g'
#收件人地址
to_addr = '10********[email protected]'
#邮箱服务器地址
smtp_server = 'smtp.qq.com'
#设置邮件信息
msg = MIMEText('Python爬虫运行异常,异常信息为遇到HTTP 403','plain','utf-8')
msg['From'] = _format_addr('Python爬虫一号<%s>'%from_addr)
msg['To'] = _format_addr('管理员<%s>'%to_addr)
msg['Subject'] = Header('一号爬虫运行异常.','utf-8').encode()
#发送邮件
server = smtplib.SMTP_SSL(smtp_server,465)
#打印出和SMTP服务器交互的所有信息
server.set_debuglevel(1)
#登录SMTP服务器
server.login(from_addr,password)
#sendmail():发送邮件,由于可以一次发给多个人,所以传入一个list邮件正文是一个str,as_string()把MIMEText对象变成str。
server.sendmail(from_addr,to_addr,msg.as_string())server.quit()print('邮件发送成功!')
7、登录接收端邮箱,查看是否发送成功,如下图:
8、如果能成功收到邮件的话就说明完成了。