def send_pick_rubbish_message(body,subject): mail_host = "smtp.163.com" # 设置服务器 mail_user = "steam_robot_send@163.com" # 用户名 mail_pass = "RRXYJYWNIHZPWNCZ" # 授权码,注意不是邮箱登录密码,是上述设置的授权密码!!! sender = 'steam_robot_send@163.com' #receivers = ['2499690965@qq.com','1272365872@qq.com','993592136@qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱 receivers = ['993592136@qq.com'] message = MIMEText(body, 'plain', 'utf-8') message['From'] = "steam_robot_send@163.com" message['To'] = "2499690965@qq.com" message['Subject'] = Header(subject, 'utf-8') smtpObj = smtplib.SMTP() smtpObj.connect(mail_host, 25) smtpObj.set_debuglevel(1) smtpObj.login(mail_user, mail_pass) smtpObj.sendmail(sender, receivers, message.as_string()) print("邮件发送成功")
时间: 2024-03-14 07:48:46 浏览: 26
这段代码似乎是 Python 的邮件发送函数,通过 SMTP 协议连接到邮件服务器,然后发送邮件消息。其中的变量 `body` 和 `subject` 分别表示邮件正文和主题,`mail_host` 表示邮件服务器的地址,`mail_user` 和 `mail_pass` 表示登录该邮件服务器的用户名和授权码,`sender` 表示发件人的邮箱地址,`receivers` 表示收件人的邮箱地址。如果您想使用该函数发送邮件,需要先设置好这些变量的值,然后调用函数即可。
相关问题
import smtplib from email.mime.text import MIMEText from email.header import Header def send_pick_rubbish_message(body,subject): mail_host = "smtp.163.com" # 设置服务器 mail_user = "steam_robot_send@163.com" # 用户名 mail_pass = "UHGBXMHQUAYNYVHM" # 授权码,注意不是邮箱登录密码,是上述设置的授权密码!!! sender = 'steam_robot_send@163.com' #receivers = ['2499690965@qq.com','1272365872@qq.com','993592136@qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱 receivers = ['dyf2b2@163..com'] message = MIMEText(body, 'plain', 'utf-8') message['From'] = "steam_robot_send@163.com" message['To'] = "dyf2b2@163..com" message['Subject'] = Header(subject, 'utf-8') smtpObj = smtplib.SMTP() smtpObj.connect(mail_host, 25) smtpObj.set_debuglevel(1) smtpObj.login(mail_user, mail_pass) smtpObj.sendmail(sender, receivers, message.as_string()) print("邮件发送成功")
这段代码是 Python 的邮件发送函数,其中 `smtplib` 库用于连接邮件服务器,`email.mime.text` 和 `email.header` 用于构建邮件消息。函数 `send_pick_rubbish_message` 的参数 `body` 和 `subject` 分别表示邮件正文和主题,其余的变量与值的含义与上面的代码相同。发送邮件的过程与上面的代码也相同,需要先设置好变量的值,然后调用函数即可。请注意,在发送邮件的过程中,需要设置正确的收件人地址和发件人地址,否则邮件将无法送达。
import timefrom serial import Serialimport serial.tools.list_portsimport cv2import numpy as npcap1 = cv2.VideoCapture("/Users/yankaipan/Desktop/stand.mp4")cap2 = cv2.VideoCapture("/Users/yankaipan/Desktop/apple.mp4")cap3 = cv2.VideoCapture("/Users/yankaipan/Desktop/bamboo.mp4")cap4 = cv2.VideoCapture("/Users/yankaipan/Desktop/rubbish.mp4")port_list = list(serial.tools.list_ports.comports())port_list_1 = list(port_list[2])port_serial = port_list_1[0]arduinoData = serial.Serial(port_serial, 9600)time.sleep(1)while True: while (arduinoData.inWaiting() == 0): pass dataPacket = arduinoData.readline() dataPacket = dataPacket.decode().strip() print(dataPacket) time.sleep(3) if dataPacket == "a": while cap1.isOpened(): ret, frame = cap1.read() if ret == True: cv2.imshow('Frame', frame) if cv2.waitKey(25) & 0xFF == ord('q'): break else: cap1.set(cv2.CAP_PROP_POS_FRAMES, 0) elif dataPacket == "b": while cap2.isOpened(): ret, frame = cap2.read() if ret == True: cv2.imshow('Frame', frame) if cv2.waitKey(25) & 0xFF == ord('q'): break else: cap2.set(cv2.CAP_PROP_POS_FRAMES, 0) elif dataPacket == "c": while cap3.isOpened(): ret, frame = cap3.read() if ret == True: cv2.imshow('Frame', frame) if cv2.waitKey(25) & 0xFF == ord('q'): break else: cap3.set(cv2.CAP_PROP_POS_FRAMES, 0) elif dataPacket == "d": while cap4.isOpened(): ret, frame = cap4.read() if ret == True: cv2.imshow('Frame', frame) if cv2.waitKey(25) & 0xFF == ord('q'): break else: cap4.set(cv2.CAP_PROP_POS_FRAMES, 0)cv2.destroyAllWindows()怎样修改代码能够在其中一个a视频播放时,接收到arduino发送的消息时能够触发另一视频b或c或d并播放?
可以使用一个变量来记录当前正在播放的视频,当接收到新的消息时,根据消息内容判断应该播放哪个视频,并将当前正在播放的视频暂停或关闭,然后切换到新的视频播放。
以下是修改后的代码:
```
import time
from serial import Serial
import serial.tools.list_ports
import cv2
import numpy as np
cap1 = cv2.VideoCapture("/Users/yankaipan/Desktop/stand.mp4")
cap2 = cv2.VideoCapture("/Users/yankaipan/Desktop/apple.mp4")
cap3 = cv2.VideoCapture("/Users/yankaipan/Desktop/bamboo.mp4")
cap4 = cv2.VideoCapture("/Users/yankaipan/Desktop/rubbish.mp4")
port_list = list(serial.tools.list_ports.comports())
port_list_1 = list(port_list[2])
port_serial = port_list_1[0]
arduinoData = serial.Serial(port_serial, 9600)
time.sleep(1)
current_video = None # 记录当前正在播放的视频
while True:
while (arduinoData.inWaiting() == 0):
pass
dataPacket = arduinoData.readline()
dataPacket = dataPacket.decode().strip()
print(dataPacket)
time.sleep(3)
if dataPacket == "a":
if current_video != cap1: # 判断是否需要切换视频
if current_video is not None:
current_video.release()
current_video = cap1
while current_video.isOpened():
ret, frame = current_video.read()
if ret == True:
cv2.imshow('Frame', frame)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
else:
current_video.set(cv2.CAP_PROP_POS_FRAMES, 0)
elif dataPacket == "b":
if current_video != cap2:
if current_video is not None:
current_video.release()
current_video = cap2
while current_video.isOpened():
ret, frame = current_video.read()
if ret == True:
cv2.imshow('Frame', frame)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
else:
current_video.set(cv2.CAP_PROP_POS_FRAMES, 0)
elif dataPacket == "c":
if current_video != cap3:
if current_video is not None:
current_video.release()
current_video = cap3
while current_video.isOpened():
ret, frame = current_video.read()
if ret == True:
cv2.imshow('Frame', frame)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
else:
current_video.set(cv2.CAP_PROP_POS_FRAMES, 0)
elif dataPacket == "d":
if current_video != cap4:
if current_video is not None:
current_video.release()
current_video = cap4
while current_video.isOpened():
ret, frame = current_video.read()
if ret == True:
cv2.imshow('Frame', frame)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
else:
current_video.set(cv2.CAP_PROP_POS_FRAMES, 0)
cv2.destroyAllWindows()
```
注意,在切换视频时需要将上一个视频释放掉,否则会导致内存泄漏。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)