我在像企业微信推送文件的过程中出现了问题,要推送的文件exported(9).pdf与文件在同一级目录下,我也在企业微信网页端验证了我的权限是可以发送文件的,他返回了错误,是我的路径写错了吗还是哪,好几天了解决不了,
import requests, json
import urllib3
urllib3.disable_warnings()
class WechatFile(object):
def get_token(self, corpid, secret):
url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
data = {"corpid": corpid,
"corpsecret": secret}
r = requests.get(url=url, params=data, verify=False)
token = r.json()['access_token']
print(token)
return token
def get_file_url(self, token, path):
url = "https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=%s&type=file" % token
data = {"media": open(path, 'rb')}
print(data)
r = requests.post(url=url, files=data)
print(r)
dict_data = r.json()
return dict_data['media_id']
def send_news_message(self, user, path):
corpid = "ww9fc03e68235ae7b1"
secret = "mnG0wD4EbxSZEAt1vcLrzBjEgKlNXaJNrwaEwJizOZI"
agentid = "1000028"
token = self.get_token(corpid, secret)
print(token)
print(path)
file_meida = self.get_file_url(token, path)
url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % token
data = {"touser": user,
"agentid": agentid,
"msgtype": "file",
"file": {"media_id": file_meida},
"safe": "0"}
headers = {'content-type': 'application/json'}
data_dict = json.dumps(data, ensure_ascii=False).encode('utf-8')
r = requests.post(url=url, headers=headers, data=data_dict)
status = eval(r.text)
print(status)
return status
if __name__ == '__main__':
user = "@all"
path = "exported (9).pdf"
wechat_file = WechatFile()
wechat_file.send_news_message(user, path)
【以下回答由 GPT 生成】
首先,请确认你已经在代码中填写了正确的企业微信的corpid
、secret
和agentid
。这些信息可以在企业微信后台获取。
其次,在代码中的send_news_message
方法中,user
参数是指要发送给的用户账号。你可以修改这个参数为具体的用户账号,如果要发送给多个用户,可以使用英文逗号分隔多个账号。
接下来,查看你的路径是否正确。根据你的描述,文件exported(9).pdf
与代码文件在同一级目录下。确保代码文件和要发送的文件在同一个文件夹下。
经过代码分析,我们发现有可能出现以下问题:
send_news_message()
中传递给 get_file_url()
方法的 path
参数是正确的文件路径。根据你提供的代码和描述,没有明显的错误,因此我将给出一个可能的解决方案:
首先,确保你的代码填写了正确的企业微信的corpid
、secret
和agentid
。
然后,在send_news_message
方法中,设置正确的user
参数,指定要发送给的用户账号。
最后,在send_news_message
方法中,设置正确的path
参数,指定要发送的文件路径。根据你的描述,文件exported(9).pdf
与代码文件在同一级目录下,因此可以使用相对路径来指定文件路径。修改代码如下:
if __name__ == '__main__':
user = "user1,user2" # 设置要发送给的用户账号,多个账号使用英文逗号分隔
path = "exported(9).pdf" # 设置要发送的文件路径,根据你的描述,文件和代码文件在同一级目录下
wechat_file = WechatFile()
wechat_file.send_news_message(user, path)
将以上代码填入到if __name__ == '__main__':
的后面,然后运行代码,看是否能够成功发送文件。
如果还是遇到问题,请提供更详细的错误信息,以便我们可以更好地帮助你解决问题。
【相关推荐】