2017-05-31 15 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があなたの問題を解決すると主張しています。

関連する問題