如果满足条件,请发送邮件

时间:2019-04-15 17:06:19

标签: python python-3.x

我有一个从某些传感器(例如温度)接收值的数据库,该数据库每20秒接收一次此数据,我的目标是每发送一封电子邮件,说明温度传感器的值超过26°C,该程序必须维护10分钟后,因为如果它不停止,它将在温度传感器的值仍高于26°C时发送邮件。邮件已正确发送,但存在以下两个问题:

1°程序不会停止,当程序开始运行时,电子邮件将不受限制地发送,而值保持在26°C以上。

2°尽管发送的值小于或大于26。

这是代码

def func1(x):
    dataSQL = []

    sql_conn = MySQLdb.connect('localhost', 'root', 'pass', 'DB')
    cursor = sql_conn.cursor()
    cursor.execute("SELECT value FROM sensorParser where sensor='TC'")
    rows = cursor.fetchall()
    for row in rows:
        dataSQL.append(list(row))
        labels = ['value']
        df = pd.DataFrame.from_records(dataSQL, columns=labels)
        Y = df['value'].astype(float)


        if ((Y) > 26.00).any():
            email = 'correo@gmail.com'
            password = 'pass'
            send_to_email = 'correo2@gmail.com'
            subject = 'ALERTA!!!!'
            message = 'Los valores de las variables criticas han superado el limite'
            file_location = 'C:\\Users\\User\\Desktop\\prograpython\\image.jpg'

            msg = MIMEMultipart()
            msg['From'] = email
            msg['To'] = send_to_email
            msg['Subject'] = subject

            msg.attach(MIMEText(message, 'plain'))

            filename = os.path.basename(file_location)
            attachment = open(file_location, "rb")
            part = MIMEBase('application', 'octet-stream')
            part.set_payload((attachment).read())
            encoders.encode_base64(part)
            part.add_header('Content-Disposition', "attachment; filename= %s" % filename)

            msg.attach(part)

            server = smtplib.SMTP('smtp.gmail.com', 587)
            server.starttls()
            server.login(email, password)
            text = msg.as_string()
            server.sendmail(email, send_to_email, text)
            server.quit()
     reactor.callLater(20, func1, "hello")

reactor.callLater(20, func1, "hello")
reactor.run()

致谢。

1 个答案:

答案 0 :(得分:0)

您的if条件不正确。

if ((Y) > 26.00).any():

应该是这样的。

if y > 26.0: