python向企业微信推送文件

我在像企业微信推送文件的过程中出现了问题,要推送的文件exported(9).pdf与文件在同一级目录下,我也在企业微信网页端验证了我的权限是可以发送文件的,他返回了错误,是我的路径写错了吗还是哪,好几天了解决不了,

img

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 生成】

首先,请确认你已经在代码中填写了正确的企业微信的corpidsecretagentid。这些信息可以在企业微信后台获取。

其次,在代码中的send_news_message方法中,user参数是指要发送给的用户账号。你可以修改这个参数为具体的用户账号,如果要发送给多个用户,可以使用英文逗号分隔多个账号。

接下来,查看你的路径是否正确。根据你的描述,文件exported(9).pdf与代码文件在同一级目录下。确保代码文件和要发送的文件在同一个文件夹下。

经过代码分析,我们发现有可能出现以下问题:

  1. 文件路径错误:请确保在函数send_news_message() 中传递给 get_file_url() 方法的 path 参数是正确的文件路径。
  2. 文件名错误:请确保文件名是正确的,并且文件类型是PDF格式。
  3. 权限问题:请确保你的企业微信账号有足够的权限发送文件消息。
  4. 代码错误:请检查代码是否存在其他错误,比如缩进错误、拼写错误等。

根据你提供的代码和描述,没有明显的错误,因此我将给出一个可能的解决方案:

首先,确保你的代码填写了正确的企业微信的corpidsecretagentid

然后,在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__':的后面,然后运行代码,看是否能够成功发送文件。

如果还是遇到问题,请提供更详细的错误信息,以便我们可以更好地帮助你解决问题。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^