本项目的具体需求是:树莓派启动邮件和 OpenCV 服务,OpenCV 对摄像头实时视频监控,当检测 到人脸后后拍照,将拍摄到的照片通过邮件以网页内图片的形式发送到另一个邮箱地址内。 python 发送邮件的方式基本基于方式,第一种是在树莓派上启用 sendmail 服务,这种方式比较 繁琐,需要设置自己的域名,地址等,另一种就是使用其他邮箱服务商(qq,网易 163,Google gmail)的 smtp 服务. 这次我们选用 qq 的 smtp 服务和一个 qq 邮箱作为邮件的发送者。 首先进入通过浏览器进入自己的 qq 邮箱,在页面顶部的用户名下方找到“设置”—“账户”— “SMTP 服务”—“POP3/SMTP 服务”— “开启”
注意:qq 邮箱的 smtp 服务可能要求你为自己的 email 设置一个独立密码,没有关系,正常情况, 但是这个密码请牢记,以免影响邮箱的正常使用。完成之后系统将会自动生成一套密钥,将密钥保存好后我们对 STMP 服务的配置就完成。
首先是一系列 SMTP 服务的配置:
sendDate=0 sender = “xxxxxxxxx@qq.com“ #自己的 qq 邮箱
password = “xxxxxxxxx” #在设置 qq 邮箱的 STMP 服务生成的密钥
receiver = "xxxxxxxxxx@xx.com" #邮件服务与端口信息-----------------
smtp_server = "smtp.qq.com" smtp_port = 465 #qq 的 SMTP 端口 465 msg = MIMEMultipart('related') ##采用 related 定义内嵌资源的邮件体
在检测到人脸后,立即将有“人脸”的帧保存成图片保存在本地,文件名为 out.png。文件的路 径需要自行重新设置。每次有新的图片被保存时,已有的 out.png 就将会被重写。之后是构建邮 件的部分,分别设置邮件的发件人,收件人,主题。我们的需求是发送一个包含图片的网页类型 邮件,用到了 MIMEText()方法,在这个方法中将将要发送的文字和图片经由 html 标签包裹后组 合在一起。最后把生成的网页添加到 msg 中进行发动
运行程序前,先对文件中 “sender”、“password”和“receiver”进行修改,
password =输入生成的密钥、sendDate和receiver的邮箱不要一样
(163邮箱也尝试过,但是没有成功),查看原因好像是说163邮箱只有VIP邮箱才可使用SMTP发送邮件,如果有读者知道具体原因可以告知我一下,将不胜感激。
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Tue Nov 6 01:18:45 2018
* @par Copyright (C): 2010-2019, Shenzhen Yahboom Tech
* @file email_face
* @version V1.0
* @details
* @par History
@author: longfuSun
"""
from __future__ import division
import cv2
import time
#import signal
import sys