2017-05-31 380 views
0

我正在尝试编写一个程序,该程序将监视磁盘使用情况并在超过阈值时发送电子邮件。这是我到目前为止有:电子邮件脚本发送文件ATT00001而不是电子邮件正文中的文本

#!/usr/bin/python 

import os,psutil,smtplib 
from email.mime.text import MIMEText 
from subprocess import Popen, PIPE 

THRESHOLD = 90 
partitions = psutil.disk_partitions(all=True) 
message = 'WARNING: DISK OVER ' + str(THRESHOLD) + '% FULL' 

#for loop to iterate through disks and monitor usage 
for p in partitions: 
    diskuse = (psutil.disk_usage(p.mountpoint).percent) 
    if psutil.disk_usage(p.mountpoint).percent >= THRESHOLD: 
      msg = MIMEText(message) 
      msg["From"] = "****@***.com" 
      msg["To"] = "****@***.com" 
      msg["Subject"] = "DISK(S) OVER THRESHOLD" 
      P = Popen(["/usr/sbin/sendmail", "-t", "-oi"], stdin=PIPE,universal_newlines=True) 
      P.communicate(msg.as_string()) 

当我尝试运行该程序,因为它是在这里,将电子邮件发送,而不是发送文本电子邮件,我收到了一个名为ATT00001文件。我试图不diskuse运行程序和它的工作我所期望的方式,但我想不出为什么它不会让我送两messagediskuse

+0

你是如何发送'diskuse'的?我没有在你的代码中看到它。 – frankyjuang

回答

0

这可能是因为你想发送的电子邮件中包含特殊字符。当它包含特殊字符(如\r)时,它会将其更改为附件。

This stack overflow post谈得很多。

他们声称LANG="en_US.UTF8" ; export LANG将解决您的问题。

相关问题