此脚本的目的是侦听串行端口并发送带有ip camera图片的电子邮件,该图片在触发时会被检索。这是我到目前为止的错误。
`导入时间 导入序列 来自email.MIMEMultipart导入MIMEMultipart 来自email.MIMEText导入MIMEText 来自email.MIMEImage导入MIMEImage 导入smtplib 导入日期时间 import urllib
TO = '111111111@mms.att.net'
GMAIL_USER = 'email@gmail.com'
GMAIL_PASS = 'password'
SUBJECT = 'Intrusion= NODE 18'
TEXT = 'MOVEMENT'
ser = serial.Serial('/dev/tty.usbserial-DA00S0U6', 115200)
def send_email():
urllib.urlretrieve ("http://<IPADDRESS>/snapshot/view4.jpg","view4.jpg")
print("Sending Email")
print str(datetime.datetime.now())
smtpserver = smtplib.SMTP("smtp.gmail.com",587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo
smtpserver.login(GMAIL_USER, GMAIL_PASS)
header = 'To:' + TO + '\n' + 'From: ' + GMAIL_USER
header = header + '\n' + 'Subject:' + SUBJECT + '\n'
print header
msg = MIMEMultipart() + header + '\n' + TEXT + ' \n\n'
msg.attach(MIMEImage(file("view4.jpg").read()))
smtpserver.sendmail(GMAIL_USER, TO, msg)
smtpserver.close()
while True:
message = ser.readline()
print(message)
if "[18] MOTION" in message :
send_email()
time.sleep(0.5)`
错误:===
Traceback (most recent call last):
File "motion3.py", line 58, in <module>
send_email()
File "motion3.py", line 32, in send_email
msg = MIMEMultipart() + header + '\n' + TEXT + ' \n\n'
TypeError: unsupported operand type(s) for +: 'instance' and 'str'
答案 0 :(得分:1)
将来,请确保您发布的代码缩进正确!
您没有正确使用MIMEMultipart
课程。请参阅Python文档中的email: Examples;第3个示例显示了MIMEMultipart
的正确用法。
错误消息表示您正在尝试将新的类实例MIMEMultipart()
和字符串header
添加到一起,而您无法这样做!
您的代码中可能存在逻辑错误,但我并未仔细研究过它 - 尝试阅读错误缩进的Python太痛苦了。 :(