如何通过django中的电子邮件发送功能错误报告

时间:2016-12-20 12:42:02

标签: python django

我必须在我的项目中实现paystation支付网关,这个网关响应有两种方式,在事务一个返回url和其他POST post url,post url在后端工作,因为它适用于所有其他支付网关,它返回POST url上的所有与支付相关的响应,它以XML格式返回结果。

我想在我的电子邮件中发送此回复,以便我可以检查响应参数,因此我使用此代码。

def payment_post(request):
    responseData = xmltodict.parse(request.POST)
    msg = EmailMultiAlternatives('Post Parameters', responseData, 'exampleFrom@gmail.com', ['exampleTo@gmail.com'])
    msg.send()

它没有向我发送有关我的电子邮件ID的任何详细信息,但是当我使用此代码时

msg = EmailMultiAlternatives('Post Parameters', 'Testing data', 'exampleFrom@gmail.com', ['exampleTo@gmail.com'])
msg.send()

它向我发送带有“测试数据”的邮件。作为邮件内容和' POST参数'作为主题,所以这意味着在解析xml时存在一些问题,或者我没有得到任何回复的帖子数据。

所以我想查看错误,有什么方法可以获取此错误详细信息,我可以在我的电子邮件ID上发送错误详细信息吗?

编辑: - 我收到此xml回复

<?xml version="1.0" standalone="yes"?>
<InitiationRequestResponse>
<Username>
605002
</Username>
<RequestIP>
203.118.134.77
</RequestIP>
<RequestUserAgent/>
<RequestHttpReferrer/>
<PaymentRequestTime>2008-10-02 15:59:29</PaymentRequestTime>
<DigitalOrder>
https://payments.paystation.co.nz/hosted/?hk=KBzTIBy5oYEI
</DigitalOrder>
<DigitalOrderTime>2008-10-02 15:59:30</DigitalOrderTime>
<DigitalReceiptTime/>
<PaystationTransactionID>0000000466-01</PaystationTransactionID>
</InitiationRequestResponse>

由于

1 个答案:

答案 0 :(得分:0)

我希望你需要一个XML字符串需要xmltodictparse函数, 首先,您需要从XML获取POST字符串,所需的代码更改类似于以下代码,需要注意的要点,

  • 此处POST ['data']表示您正在使用的表单的密钥
  • 如果要从HTTP Body发送数据,则需要替换 request.POST with request.body.decode('utf-8')
  • request.FILES ['filename']。read(),如果要上传文件(xml文件),其中表格键是'文件名'。

    import json
    def payment_post(request):
        responseData = xmltodict.parse(request.POST['data'])
        responseString = json.dumps(responseData) # or you can use just str(responseData) if you have simple data values
        msg = EmailMultiAlternatives('Post Parameters', responseString, 'exampleFrom@gmail.com', ['exampleTo@gmail.com'])
        msg.send() 
    

如果该内容正在获取POST表单键&amp;值为dict,request.POST是QueryDict对象而不是你需要的,因为代码可以改为

def payment_post(request):
    responseData = xmltodict.parse(request.POST.dict())
    msg = EmailMultiAlternatives('Post Parameters', responseData, 'exampleFrom@gmail.com', ['exampleTo@gmail.com'])
    msg.send()