Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用子流程模块在python中发送电子邮件_Python_Subprocess_Postfix Mta - Fatal编程技术网

使用子流程模块在python中发送电子邮件

使用子流程模块在python中发送电子邮件,python,subprocess,postfix-mta,Python,Subprocess,Postfix Mta,我写了一个脚本,从一个网站上检索天气报告,并在早上发送给我的女朋友 使用Gmail。当然,我可以使用我的Postfix服务器发送它。这是剧本 我不确定的是在有这么多参数的情况下如何使用Popen()函数。 我可以使用命令发送邮件 $mail-s”おお様からの天気予報" abc@gmail.com

我写了一个脚本,从一个网站上检索天气报告,并在早上发送给我的女朋友

使用Gmail。当然,我可以使用我的Postfix服务器发送它。这是剧本

我不确定的是在有这么多参数的情况下如何使用Popen()函数。

我可以使用命令发送邮件

$mail-s”おお様からの天気予報" abc@gmail.com

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import urllib2
import subprocess

weather_url = "http://www.weather.com.cn/weather/101020100.shtml"
f=urllib2.urlopen(weather_url)
html = f.read()
soup = BeautifulSoup(html)

content = soup.title.string

with open("foo","w") as mail:
    mail.write(content.encode('utf-8'))

command_line = 'mail -s "おお様からの天気予報" abc@gmail.com < foo'

li = command_line.split()

process = subprocess.Popen(li, shell=True)

returncode = process.wait()
!/usr/bin/env python
#-*-编码:utf-8-*-
从bs4导入BeautifulSoup
导入urllib2
导入子流程
天气_url=”http://www.weather.com.cn/weather/101020100.shtml"
f=urlib2.urlopen(天气url)
html=f.read()
soup=BeautifulSoup(html)
content=soup.title.string
打开(“foo”、“w”)作为邮件:
mail.write(content.encode('utf-8'))
命令行='mail-s'おお様からの天気予報" abc@gmail.com
天气预报的内容在
foo
文件中。有谁能告诉我如何在有这么多参数的情况下使用
Popen()

我试了很多


此脚本似乎不起作用。

使用
shell=True时,不需要传递参数列表。
只需传递参数字符串即可

command_line = 'mail -s "おお様からの天気予報" abc@gmail.com < foo'
process = subprocess.Popen(command_line, shell=True)
命令行='mail-s'おお様からの天気予報" abc@gmail.com
或者..不能使用shell解释参数并传递列表

command_line = 'mail -s "おお様からの天気予報" abc@gmail.com < foo'
li = command_line.split()
process = subprocess.Popen(li)
命令行='mail-s'おお様からの天気予報" abc@gmail.com
但是您不能传递参数列表并使用shell来解释它


根据您命令的性质,我建议将字符串传递给shell进行解释。(第一个选项)

@caylus欢迎您用您尝试过的内容打开一个新问题,并将其链接为注释,我将尝试查看它。但这不是地方。