Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的smtplib错误_Python - Fatal编程技术网

python中的smtplib错误

python中的smtplib错误,python,Python,我有一个python脚本,在raspeberry pi上运行,它监视我的服务器室,定期给我发送电子邮件,并制作其他东西。 第一次运行脚本时,它会发送一个通知并正常工作,然后等待一段时间(5或30分钟),这取决于是否触发了报警,所以我编写了一个for循环来等待。循环完成后,脚本调用发送电子邮件的函数,python返回一个错误。 有人能帮我吗? 我也在Debian7.7.0Box上测试了它,我发现了同样的错误。 下面是一个示例脚本和错误。 提前谢谢。 多姆 smtplib在创建SMTP对象时打开TC

我有一个python脚本,在raspeberry pi上运行,它监视我的服务器室,定期给我发送电子邮件,并制作其他东西。 第一次运行脚本时,它会发送一个通知并正常工作,然后等待一段时间(5或30分钟),这取决于是否触发了报警,所以我编写了一个for循环来等待。循环完成后,脚本调用发送电子邮件的函数,python返回一个错误。 有人能帮我吗? 我也在Debian7.7.0Box上测试了它,我发现了同样的错误。 下面是一个示例脚本和错误。 提前谢谢。 多姆


smtplib在创建SMTP对象时打开TCP连接。当超时可能已经关闭连接时,尝试在500秒不活动后重新使用它

您应该只保留服务器名称,在您的用例中为每个连接创建一个新的SMTP对象,因为发送邮件之间的延迟太大。

如上所述,您应该为每个发送的电子邮件打开和关闭与服务器的连接

几个月前,我编写了一个用Python发送电子邮件的类,您可以在这里找到:创建一个DataSender对象,它处理到服务器的连接。此外,它调用一个JSON文件,其中存储帐户和密码,因此您不需要将其保存在代码中


请随意使用它。正如源代码开头的评论中所提到的那样,它是从中改编而来的。

谢谢Serge和kmundnic。我在maintime中做了另一个测试,我写了一个发送电子邮件的函数,必要时调用,工作正常。我相信类文档不是很清楚。明天我来看看你们的课。
File "/usr/lib/python2.7/smtplib.py", line 361, in getreply
raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed

# Import
from time import sleep
import time
import smtplib
import sys
import string
smtp_server = "10.0.0.4" # mail server address
mail_from = "server@domain.com" 
mail_to = "user@gmail.com" 
mail_subj = "Server room notify" 

server = smtplib.SMTP(smtp_server)
valore = 24 # value for the funtion

def SendAlertEmail(t_value):
    log_t = time.strftime("%d/%m/%A %H:%M:%S ")
    Text = string.join("Server room notify \n " + str(log_t) + str(t_value))
    Body_email = string.join((
       "From: %s" % mail_from,
       "To: %s" % mail_to,
       "Subject: %s" % mail_subj,
       "",
       Text
       ), "\r\n")
    server.sendmail(mail_from,mail_to,Body_email)
    return

SendAlertEmail(valore) # calling from here works fine
for i in range(0,500):
    sleep(1)
    print(str(i))

SendAlertEmail(valore) # after 500 secs goes in error. Test on debian 7.7.0 python 2.7.3 gcc 4.7.2