使用mailgun python API发送html电子邮件时出错

使用mailgun python API发送html电子邮件时出错,python,python-requests,mailgun,Python,Python Requests,Mailgun,我可以使用Mailgun python API发送文本电子邮件: def send_simple_message(mailtext, filename=""): requests.post("https://api.mailgun.net/v3/mydomain.in/messages", auth=("api", "key-1234"), files=[("attachment", open(filename))], data={"from": "Credit Card Man

我可以使用Mailgun python API发送文本电子邮件:

def send_simple_message(mailtext, filename=""):
  requests.post("https://api.mailgun.net/v3/mydomain.in/messages",
  auth=("api", "key-1234"),
  files=[("attachment", open(filename))],
  data={"from": "Credit Card Manager <creditcards@mydomain.in>",
  "to": ["bob@mydomain.in"],
  "subject": "Summary of Credit Card payments due",
  "text": mailtext})
def发送简单消息(mailtext,filename=”“):
请求。post(“https://api.mailgun.net/v3/mydomain.in/messages",
auth=(“api”,“密钥-1234”),
文件=[(“附件”,打开(文件名))],
数据={“发件人”:“信用卡管理员”,
“致”:[”bob@mydomain.in"],
“主题”:“信用卡到期付款汇总表”,
“文本”:mailtext})
上面的代码工作正常,消息已传递

但是,当我使用html字符串尝试以下操作时

def send_simple_message(mailtext, mailhtml, filename=""):
  requests.post("https://api.mailgun.net/v3/mydomain.in/messages",
  auth=("api", "key-61a652b57"),
  files=[("attachment", open(filename))],
  data={"from": "Credit Card Manager <creditcards@mydomain.in>",
  "to": ["bob@mydomain.in"],
  "subject": "Summary of Credit Card payments due",
  "text": mailtext,
  "html": mailhtml})             
def发送简单消息(mailtext,mailhtml,filename=”“):
请求。post(“https://api.mailgun.net/v3/mydomain.in/messages",
认证=(“api”,“键-61a652b57”),
文件=[(“附件”,打开(文件名))],
数据={“发件人”:“信用卡管理员”,
“致”:[”bob@mydomain.in"],
“主题”:“信用卡到期付款汇总表”,
“文本”:邮件文本,
“html”:mailhtml})
其中,mailhtml是以下字符串:

<html><body><h4>CREDIT CARD STATEMENT FOR MAY</h4><table><tr><th>Card</th><th>Dues</th><th>Date</th></tr><tr><td>Standard Chartered</td><td>3,755.29</td><td>16/05/2018</td></tr><tr><td>HDFC</td><td>41,616.90</td><td>04/05/2018</td></tr><tr><td>ICICI</td><td>5,833.74</td><td>11/05/2018</td></tr><tr><td>SBI</td><td>20,667.00</td><td>01/05/2018</td></tr></table></body></html>             
五月卡到期的信用卡对账单测试标准特许3755.2916/05/2018HDFC41616.9004/05/2018ICICI5833.7411/05/2018SBI20667.0001/05/2018
我得到以下错误:

Traceback (most recent call last):
  File "getcreditcards.py", line 611, in <module>
    send_simple_message(txtbody, htmlbody, os.getcwd() + '/' + excelfilename)
  File "getcreditcards.py", line 484, in send_simple_message
    "html": mailhtml
  File "/usr/lib/python3/dist-packages/requests/api.py", line 112, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 488, in request
    prep = self.prepare_request(req)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 431, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "/usr/lib/python3/dist-packages/requests/models.py", line 308, in prepare
    self.prepare_body(data, files, json)
  File "/usr/lib/python3/dist-packages/requests/models.py", line 496, in prepare_body
    (body, content_type) = self._encode_files(files, data)
  File "/usr/lib/python3/dist-packages/requests/models.py", line 159, in _encode_files
    fdata = fp.read()
  File "/usr/lib/python3.6/codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 0: invalid continuation byte
回溯(最近一次呼叫最后一次):
文件“getcreditcards.py”,第611行,在
发送简单消息(txtbody、htmlbody、os.getcwd()+'/'+excelfilename)
文件“getcreditcards.py”,第484行,发送简单消息
“html”:邮件html
文件“/usr/lib/python3/dist-packages/requests/api.py”,第112行,在post中
返回请求('post',url,data=data,json=json,**kwargs)
文件“/usr/lib/python3/dist packages/requests/api.py”,请求中的第58行
return session.request(method=method,url=url,**kwargs)
文件“/usr/lib/python3/dist packages/requests/sessions.py”,第488行,在请求中
准备=自我准备请求(req)
文件“/usr/lib/python3/dist packages/requests/sessions.py”,第431行,在prepare\u请求中
钩子=合并钩子(request.hooks,self.hooks),
文件“/usr/lib/python3/dist packages/requests/models.py”,第308行,在prepare中
self.prepare_body(数据、文件、json)
文件“/usr/lib/python3/dist packages/requests/models.py”,第496行,在正文中
(正文,内容类型)=自编码文件(文件,数据)
文件“/usr/lib/python3/dist packages/requests/models.py”,第159行,在编码文件中
fdata=fp.read()
文件“/usr/lib/python3.6/codecs.py”,第321行,解码中
(结果,消耗)=自身缓冲区解码(数据,自身错误,最终)
UnicodeDecodeError:“utf-8”编解码器无法解码位置0中的字节0xd0:无效的连续字节

这里出现了什么问题?

您试图在脚本开始时编写

 #coding: UTF-8 
?