使用python执行shell邮件命令

Posted

技术标签:

【中文标题】使用python执行shell邮件命令【英文标题】:Executing shell mail command using python 【发布时间】:2015-03-08 13:45:28 【问题描述】:

我已使用以下代码发送一封电子邮件,正如其中一篇关于类似主题的帖子中所建议的那样。但是邮件还没有发出。有什么建议吗?

import subprocess
recipient = 'xxxxx@gmail.com'
subject = 'test'
body = 'testing mail through python'
def send_message(recipient, subject, body):
    process = subprocess.Popen(['mail', '-s', subject, recipient],
                               stdin=subprocess.PIPE)
    process.communicate(body)

print("sent the email")

【问题讨论】:

你调用函数 send_message() 了吗? mail -s ... 是否在您的计算机上通过命令行工作?如果不; subprocess 不会让它工作。你可以send email using smtplib 【参考方案1】:

你的函数可能没有被调用,试试这个代码:

import subprocess

recipient = 'xxxxx@gmail.com'
subject = 'test'
body = 'testing mail through python'

def send_message(recipient, subject, body):
    try:
      process = subprocess.Popen(['mail', '-s', subject, recipient],
                               stdin=subprocess.PIPE)
    except Exception, error:
      print error
    process.communicate(body)

send_message(recipient, subject, body)

print("sent the email")

可能有效。祝你好运。

【讨论】:

在windows中运行会出现以下错误Traceback (most recent call last): File "C:/Python34/Scripts/sending_gmail_3.py", line 12, in <module> send_message(recipient, subject, body) File "C:/Python34/Scripts/sending_gmail_3.py", line 10, in send_message stdin=subprocess.PIPE) File "C:\Python34\lib\subprocess.py", line 858, in __init__ restore_signals, start_new_session) File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child startupinfo) FileNotFoundError: [WinError 2] The system cannot find the file specified @sandy 当然。 Windows 中不存在mail 命令。 在 Python 3.x 中,更改为 body = b'testing mail through python' 即可工作 @iqhcpsgbl = 我们如何在上面的例子中添加附件?我需要附加 csv...

以上是关于使用python执行shell邮件命令的主要内容,如果未能解决你的问题,请参考以下文章

Python - 如何使用管道执行shell命令,但没有'shell = True'?

python执行使用shell命令方法

python执行shell命令?

python执行shell,报错:未找到命令

python中使用shell命令及常用函数

为啥使用 Python 的 os 模块方法而不是直接执行 shell 命令?