Python请求:尝试制作Mailgun“;“发送内联图像”;样板

Python请求:尝试制作Mailgun“;“发送内联图像”;样板,python,python-requests,mailgun,Python,Python Requests,Mailgun,我一直坚持用我的例子 UPD:以下问题发生在虚拟机上,而它在另一个虚拟机上工作 import requests requests.post( "https://api.mailgun.net/v2/samples.mailgun.org/messages", auth=("api", "key-3ax6xnjp29jd6fds4gc373sgvjxteol0"), files=[("inline", open("files/test.jpg"))], data={

我一直坚持用我的例子

UPD:以下问题发生在虚拟机上,而它在另一个虚拟机上工作

import requests
requests.post(
    "https://api.mailgun.net/v2/samples.mailgun.org/messages",
    auth=("api", "key-3ax6xnjp29jd6fds4gc373sgvjxteol0"),
    files=[("inline", open("files/test.jpg"))],
    data={"from": "Excited User <me@samples.mailgun.org>",
          "to": "bar@example.com",
          "subject": "Hello",
          "text": "Testing some Mailgun awesomness!",
          "html": '<html>Inline image here: <img src="cid:test.jpg"></html>'})
导入请求
请求发送(
"https://api.mailgun.net/v2/samples.mailgun.org/messages",
auth=(“api”,“密钥-3ax6xnjp29jd6fds4gc373sgvjxteol0”),
files=[(“inline”,open(“files/test.jpg”)],
数据={“发件人”:“兴奋用户”,
“至”:bar@example.com",
“主题”:“你好”,
“文本”:“测试一些邮枪的威严!”,
“html”:“此处的内联图像:”})
我不改变线路,但它不起作用,吐回溯

注意:不要期望邮件发送,但请求必须自行发生

Traceback (most recent call last):
  File "test.py", line 34, in <module>
    "html": '<html>Inline image here: <img src="cid:test.jpg"></html>'})
  File "<projectpath>/lib/python2.7/site-packages/requests/api.py", line 88, in post
    return request('post', url, data=data, **kwargs)
  File "<projectpath>/lib/python2.7/site-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "<projectpath>/lib/python2.7/site-packages/requests/sessions.py", line 456, in request
    resp = self.send(prep, **send_kwargs)
  File "<projectpath>/lib/python2.7/site-packages/requests/sessions.py", line 559, in send
    r = adapter.send(request, **kwargs)
  File "<projectpath>/lib/python2.7/site-packages/requests/adapters.py", line 327, in send
    timeout=timeout
  File "<projectpath>/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 498, in urlopen
    body=body, headers=headers)
  File "<projectpath>/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 296, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/lib64/python2.7/httplib.py", line 946, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib64/python2.7/httplib.py", line 987, in _send_request
    self.endheaders(body)
  File "/usr/lib64/python2.7/httplib.py", line 940, in endheaders
    self._send_output(message_body)
  File "/usr/lib64/python2.7/httplib.py", line 801, in _send_output
    msg += message_body
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 677: ordinal not in range(128)
回溯(最近一次呼叫最后一次):
文件“test.py”,第34行,在
“html”:“此处的内联图像:”})
文件“/lib/python2.7/site packages/requests/api.py”,第88行,在post中
返回请求('post',url,data=data,**kwargs)
文件“/lib/python2.7/site packages/requests/api.py”,请求中的第44行
return session.request(method=method,url=url,**kwargs)
文件“/lib/python2.7/site packages/requests/sessions.py”,请求中的第456行
resp=自我发送(准备,**发送)
文件“/lib/python2.7/site packages/requests/sessions.py”,第559行,在send中
r=适配器.send(请求,**kwargs)
文件“/lib/python2.7/site packages/requests/adapters.py”,第327行,在send中
超时=超时
文件“/lib/python2.7/site packages/requests/packages/urllib3/connectionpool.py”,urlopen中的第498行
正文=正文,标题=标题)
文件“/lib/python2.7/site packages/requests/packages/urllib3/connectionpool.py”,第296行,在请求中
conn.request(方法,url,**httplib\u request\u kw)
请求中的文件“/usr/lib64/python2.7/httplib.py”,第946行
self.\u发送请求(方法、url、正文、标题)
文件“/usr/lib64/python2.7/httplib.py”,第987行,在发送请求中
self.endheaders(主体)
文件“/usr/lib64/python2.7/httplib.py”,第940行,在endheaders中
自发送输出(消息体)
文件“/usr/lib64/python2.7/httplib.py”,第801行,在发送输出中
msg+=消息体
UnicodeDecodeError:“ascii”编解码器无法解码位置677处的字节0xff:序号不在范围内(128)
对pdb的一些探索表明,当执行
conn.request(方法,url,**httplib_request_kw)
httplib_request_kw['body']
包含无法正确解码为unicode的字符串,因此body的格式不正确

curl示例非常有效,但我更喜欢使用请求


PS:相关,但不适用于我。

问题在于过时的httplib

如果您遇到这个问题,请注意获取新的httplib。(复制到lib/python2.7似乎就足够了。)我的sys.version是'2.7(r27:82500,2010年8月7日,16:54:59)[GCC],对于python请求2.3.0来说太旧了


可能解决了

看起来字符串中有一些unicode字节。也许
u'这里的内联图像:'
@nsfyn55不,它没有帮助。正如upd中提到的,它在另一台计算机上工作,没有任何修改。现在想找出关键的区别。你们剪贴那个根线了吗?尝试在目标机器上逐个字符地键入。感谢您的时间,这是完全不同的问题。为什么不升级Python本身呢?2.7.0已经非常过时了。我不是唯一一个使用这台机器的人。我不喜欢在我自己的virtualenv之外改变任何东西,如果它理论上会损害其他部分;您可以轻松地创建Python的私有安装。