2017-05-31 107 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將解決您的問題。

相關問題