使用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邮件命令的主要内容,如果未能解决你的问题,请参考以下文章