Я работаю над этим проектом, где у меня есть 3 строковые переменные, которые я хочу отправить их значения на адрес электронной почты.Я был в состоянии отправить текстовое сообщение по электронной почте;Тем не менее, я не мог включить эти значения переменных в. Ниже приведены мои коды:
import serial
import smtplib
import time
serialport = serial.Serial('/dev/ttyUSB0', 115200, timeout = 0.5)
user= 'user@gmail.com'
password= 'password'
receiver= 'receiver@gmail.com
subject= 'Solar tracker status'
header = 'To: ' + email + '\n' + 'From: ' + email + '\n' + 'Subject: ' +
subject
while True:
line = serialport.readline()
result = line.find(";")
if result > 0:
str = line.split(";")
volt=str[0]
power=str[1]
temp=str[2]
body = "\n" + + "Voltage: " + volt + "\n" + "Power: " + power + "\n" + "Temp: " + temp
print header + '\n' + body
s=smtplib.SMTP('smtp.gmail.com',587)
s.ehlo()
s.starttls()
s.ehlo()
s.login(email, password)
s.sendmail(email, email, header + '\n\n' + body)
s.quit
При запуске этого скрипта я получил это сообщение об ошибке:
File "testserial.py", line 23, in <module>
body = "\n" + + "Voltage: " + volt
TypeError: bad operand type for unary +: 'str'
Я попытался преобразоватьпеременная в строку, используя str (вольт), затем получил это сообщение об ошибке:
File "testserial.py", line 23, in <module>
str(volt)
TypeError: 'list' object is not callable
Я не могу понять это, потому что они изначально в строковом формате, так как я смог записать их в текстовый файл, используя% s без необходимости конвертировать его.
Думаю, я просто не знаю, как передать переменную в тело письма.Пожалуйста, помогите!