Мне нужно выяснить, как создать скрипт, который сканирует новые файлы в каталоге, а когда есть новый, отправляет файл по электронной почте.Отправить видеофайл через python
Кто-то продолжает красть велосипеды в моем многоквартирном доме! Сначала это была моя ошибка (я должен был ее заблокировать), теперь мошенник модернизирован, режу цепочки. У меня было это после того, как мошенник украл мой второй велосипед, разрезав полудюймовый самолет.
В любом случае, используя малину pi в качестве камеры с активированной функцией движения, я хочу, чтобы она отправила мне видеофайл, как только видеопрограмма завершит его запись. Это означает, что они крадут пи.
Я рассматриваю эти примеры, но я не могу понять, как заставить скрипт работать непрерывно (каждую минуту) или как заставить его сканировать папку для нового файла.
How do I send attachments using SMTP?
OK Я получил его до сканирования, а затем пытается по электронной почте. При попытке прикрепления видеофайла он не работает. Вы можете помочь? Вот пересмотренный код:
Неудача:
тзд = MIMEMultipart() TypeError: объект 'LazyImporter' не отозваны, строка 38
import time, glob
import smtplib
import email.MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders, MIMEMultipart
import os
#Settings:
fromemail= "Jose Garcia <[email protected]>"
loginname="[email protected]"
loginpassword="somerandomepassword"
toemail= "Jose Garcia <[email protected]>"
SMTPserver='smtp.gmail.com'
SMTPort=587
fileslocation="/Users/someone/Desktop/Test/*.mp4"
subject="Security Notification"
def mainloop():
files=glob.glob(fileslocation) #Put whatever path and file format you're using in there.
while 1:
new_files=glob.glob(fileslocation)
if len(new_files)>len(files):
for x in new_files:
if x in files:
print("New file detected "+x)
print("about to call send email")
sendMail(loginname, loginpassword, toemail, fromemail, subject, gethtmlcode(), x, SMTPserver, SMTPort)
files=new_files
time.sleep(1)
def sendMail(login, password, to, frome, subject, text, filee, server, port):
# assert type(to)==list
# assert type(filee)==list
msg = MIMEMultipart()
msg['From'] = frome
msg['To'] = COMMASPACE.join(to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
msg.attach(MIMEText(text))
# #for filee in files:
part = MIMEBase('application', "octet-stream")
part.set_payload(open(filee,"rb").read())
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"'
% os.path.basename(filee))
msg.attach(part)
smtp = smtplib.SMTP(SMTPserver, SMTPort)
smtp.sendmail(frome, to, msg.as_string())
server.set_debuglevel(1)
server.starttls()
server.ehlo()
server.login(login, password)
server.sendmail(frome, to, msg)
server.quit()
def gethtmlcode():
print("about to assemble html")
html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" '
html +='"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">'
html +='<body style="font-size:12px;font-family:Verdana"><p>A new video file has been recorded </p>'
html += "</body></html>"
return(html)
#Execute loop
mainloop()
лучше, но то, что делает « Это не так? Он отправляет видео [Rick Astley] (http://en.wikipedia.org/wiki/Rickrolling)? Это порождает ошибку? Что такое сообщение об ошибке? –
Я пересмотрел его снова, меньше беспорядка. Код все еще не работает: «Ошибка: msg = MIMEMultipart() TypeError: объект« LazyImporter »не может быть вызван, строка 38« –
Пожалуйста, покажите нам, что такое 'LazyImporter' и« строка 38 ». –