python - mailutils 无法通过 python 中的 subprocess.run 工作
问题描述
我正在尝试通过 python 的 subprocess.run 方法发送邮件。不幸的是,它不起作用。
import subprocess
message = "Hello World"
process = subprocess.run(["mail", "-s", "Test, "xyz@xyz.com", "<<<", message],
stdout=subprocess.PIPE,
universal_newlines=True)
print (process.stdout)
我收到以下错误:
邮件:无法解析地址<<<' (while expanding
<<<'):格式错误的电子邮件地址
邮件:无法解析地址Hello World' (while expanding
Hello World'):格式错误的电子邮件地址
该命令在 shell 中运行(Linux Mint > 19.0)。
解决方案
<<<
语法是 bash 的一个特性。如果要使用它,则需要将命令作为 bash shell 的参数运行:
import subprocess
message = "Hello World"
command = "mail -s Test abc@def.com <<< "+message
process = subprocess.run(
["bash","-c",command],
stdout=subprocess.PIPE,
universal_newlines=True)
print (process.stdout)
但是,对动态内容使用 shell 扩展可能是一个安全问题。更好的方法是使用 subprocess.run 的输入功能(仅限 python3)
import subprocess
message = "Hello World"
command = ["mail", "-s", "Test", "abc@def.com"]
process = subprocess.run(
command,
input=message,
stdout=subprocess.PIPE,
universal_newlines=True)
print (process.stdout)
推荐阅读
- c# - MVVM 数据绑定问题,源属性未更新
- plot - 在 GrADS 的图中添加条形图?
- python - 如何更改我选择的像素的颜色?
- python - 两个文件之间的烧瓶 url_for BuildError
- javascript - 重新发送 otp 的功能在 django 项目中不起作用
- python - 在anaconda python上导入scipy时出现FileNotFoundError
- vba - 如果标签不存在,Word中的VBA以避免代码
- python - 为什么我的 LSTM 对不同句子中的相似词给出相同的预测?
- mysql - 如何在laravel中将数据动态加载到谷歌柱形图中?
- jestjs - 有没有办法在“每个”子句中运行单个 Jest 测试?