如果条件为true,则使用python代码发送邮件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果条件为true,则使用python代码发送邮件相关的知识,希望对你有一定的参考价值。

我们设置raspberry pi来测量服务器室温并使用python脚本以这种格式"Temp: 24.0 C Humidity: 67.0 %"(每2秒更新一次)保存文本文件中的输出。

现在我正在寻找从文本文件中读取温度值(例如24.0)的python代码,如果条件为真,则发送给我一封电子邮件,如(Temp> 35.0),否则什么也不做,退出。

我是python中的新手,所以请帮助我,我们已经编写了电子邮件代码及其工作,只需在下面的代码中启用上述请求的条件。

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
fromaddr = "sender@gmail.com"
toaddr = "recipient@gmail.com"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "Alert: Server Room  " 
body = "Server room current temprature is : "
msg.attach(MIMEText(body, 'plain'))
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(fromaddr, "password")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()

此脚本将使用cron选项卡运行。

答案

我想像这样的事情会做:

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText


def send_email(temperature):
    fromaddr = "sender@gmail.com"
    toaddr = "recipient@gmail.com"
    msg = MIMEMultipart()
    msg['From'] = fromaddr
    msg['To'] = toaddr
    msg['Subject'] = "Alert: Server Room  "
    body = "Server room current temprature is : " + temperature
    msg.attach(MIMEText(body, 'plain'))
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(fromaddr, "password")
    text = msg.as_string()
    server.sendmail(fromaddr, toaddr, text)
    server.quit()


f = open("temp_log.txt", "r")
content = f.read()
temp = content.split(' ')[1]
if float(temp) > 35:
    send_email(temp)
另一答案

首先看起来,但完全可靠的解决方案实施起来相当困难。您要求的代码可能如下所示:

with open ('temp.txt', 'r',  encoding='utf-8') as temp:
 for line in temp:
       try: 
           temperature = float(line.split()[1])
           if temperature > 35.0: 
                 #SENDEMAIL 
           else: 
               pass
       except: 
          pass

这里temp.txt是你的覆盆子的文件。

您需要担心的是:

  1. 实时读取文件。
  2. 你应该开发一个逻辑 - 每次读取都应该读取文件的新部分。对于旧部分,您已经发送了电子邮件。否则,您将通过大量电子邮件充斥邮箱。

以上是关于如果条件为true,则使用python代码发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

python 进阶语法

如果手动发送电子邮件,则触发代码以记录

如何检查条件,如果条件为真,则停止报价器并退出应用程序,如果条件不成立并且发生超时,则退出应用程序

python条件判断语句

Python发送邮件

魅力python------if - else 语句