Python smtplib发送多条消息而不是一条消息
我试图在启动时运行一个python脚本,在应用外部输入(例如按钮、红外传感器等,在我们的例子中是超声波传感器)时需要10秒钟的视频,然后使用python的SMTPlib库将此视频发送到指定的电子邮件地址 所有这些都很好。但是,当多次使用此输入时,Raspberry Pi会将多个视频(过去通过按下按钮拍摄)发送到电子邮件地址,而不是上次输入时启动的视频。因此,按下按钮1次将发送1个视频;按两次将发送一个新的和最后一个一起发送;按三次会发送一个新的和最后两个,以此类推 我甚至尝试在python脚本中发送邮件之后插入os.remove()。运行程序后,运行ls表明文件确实已被删除。然而不知何故,这些被删除的视频进入了电子邮件。当使用smtplib时,它是否会存储在内存中的某个位置 提到的脚本如下:Python smtplib发送多条消息而不是一条消息,python,raspberry-pi,Python,Raspberry Pi,我试图在启动时运行一个python脚本,在应用外部输入(例如按钮、红外传感器等,在我们的例子中是超声波传感器)时需要10秒钟的视频,然后使用python的SMTPlib库将此视频发送到指定的电子邮件地址 所有这些都很好。但是,当多次使用此输入时,Raspberry Pi会将多个视频(过去通过按下按钮拍摄)发送到电子邮件地址,而不是上次输入时启动的视频。因此,按下按钮1次将发送1个视频;按两次将发送一个新的和最后一个一起发送;按三次会发送一个新的和最后两个,以此类推 我甚至尝试在python脚本中
from email.mime.multipart import MIMEMultipart
from email import encoders
from email.message import Message
from email.mime.audio import MIMEAudio
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.text import MIMEText
emailfrom = "xyz@abc.com"
emailto = "xyz123@abc.com"
username = "xyz@abc.com"
password = "pass"
msg = MIMEMultipart()
msg["From"] = emailfrom
msg["To"] = emailto
msg["Subject"] = "Email Subject -- "
msg.preamble = "Email Body --"
while(True):
d=0
# Possibly the relevant section
d = pulse_d*17150
d= round(d, 2)
if(d<100):
with picamera.PiCamera() as camera:
camera.start_preview()
camera.start_recording('/home/pi/video.h264')
time.sleep(5)
camera.stop_recording()
camera.stop_preview()
time.sleep(5)
fileToSend = "/home/pi/video.h264"
ctype, encoding = mimetypes.guess_type(fileToSend)
if ctype is None or encoding is not None:
GPIO.output(test, True)
ctype = "application/octet-stream"
maintype, subtype = ctype.split("/", 1)
fp = open(fileToSend, "rb")
GPIO.output(test,False)
attachment = MIMEBase(maintype, subtype)
attachment.set_payload(fp.read())
fp.close()
encoders.encode_base64(attachment)
attachment.add_header("Content-Disposition", "attachment", filename=fileToSend)
msg.attach(attachment)
server = smtplib.SMTP("smtp.gmail.com:587")
server.starttls()
server.login(username,password)
server.sendmail(emailfrom, emailto, msg.as_string())
server.quit()
os.remove("/home/pi/video.h264")
从email.mime.multipart导入MIMEMultipart
从电子邮件导入编码器
从email.message导入消息
从email.mime.audio导入MIMEAudio
从email.mime.base导入MIMEBase
从email.mime.image导入MIMEImage
从email.mime.text导入MIMEText
emailfrom=”xyz@abc.com"
电子邮件收件人=”xyz123@abc.com"
用户名=”xyz@abc.com"
password=“pass”
msg=MIMEMultipart()
msg[“发件人”]=电子邮件发件人
msg[“收件人”]=电子邮件收件人
msg[“主题”]=“电子邮件主题--”
msg.preamble=“电子邮件正文--”
虽然(正确):
d=0
#可能是相关章节
d=脉冲d*17150
d=圆形(d,2)
如果(d我认为你应该创建新消息,而不是重复使用旧消息
将您创建的msg
代码移动到中,而循环
问题在于:
msg.attach(attachment)
将文件附加到同一邮件,但不删除旧的附件