使用子流程模块在python中发送电子邮件
我写了一个脚本,从一个网站上检索天气报告,并在早上发送给我的女朋友 使用Gmail。当然,我可以使用我的Postfix服务器发送它。这是剧本 我不确定的是在有这么多参数的情况下如何使用Popen()函数。 我可以使用命令发送邮件使用子流程模块在python中发送电子邮件,python,subprocess,postfix-mta,Python,Subprocess,Postfix Mta,我写了一个脚本,从一个网站上检索天气报告,并在早上发送给我的女朋友 使用Gmail。当然,我可以使用我的Postfix服务器发送它。这是剧本 我不确定的是在有这么多参数的情况下如何使用Popen()函数。 我可以使用命令发送邮件 $mail-s”おお様からの天気予報" abc@gmail.com
$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欢迎您用您尝试过的内容打开一个新问题,并将其链接为注释,我将尝试查看它。但这不是地方。