Python 电子邮件脚本发送文件ATT0001而不是电子邮件正文中的文本

Python 电子邮件脚本发送文件ATT0001而不是电子邮件正文中的文本,python,bash,python-3.x,ubuntu,Python,Bash,Python 3.x,Ubuntu,我正在尝试编写一个程序,该程序将监视磁盘使用情况,并在超过阈值时发送电子邮件。这就是我到目前为止所做的: #!/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:

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

#!/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())

当我尝试按此处的方式运行程序时,将发送电子邮件,但我收到一个名为ATT0001的文件,而不是发送文本电子邮件。我曾尝试在没有
diskuse
的情况下运行该程序,它的工作方式与我预期的一样,但我不明白为什么它不允许我同时发送
消息
diskuse
您尝试发送的电子邮件可能包含特殊字符。当它包含特殊字符(如
\r
)时,它会将其更改为附件

关于那件事谈了很多


他们声称
LANG=“en_US.UTF8”;导出LANG将解决您的问题。

您是如何发送的
diskuse
?我在你的代码里没看到。