如下实现发送json格式数据认证请求远程服务获取响应的结果 并发送邮件

#!/usr/bin/python
# -*- coding: utf-8 -*-

import smtplib
import urllib
import urllib2
import json



def sendPost(data):
    print "-----send post---------------------"
    print(data)
    data = json.dumps(data)
    headers={
        "Content-Type":"application/json",   # 发送数据形式
        "Authorization":"Basic xxxx"    # 认证
     }
    # test_data_urlencode = urllib.urlencode(data)
    requrl = "url"
    req = urllib2.Request(url=requrl, data=data,headers=headers)
    res_data = urllib2.urlopen(req)
    res = res_data.read().decode('utf8')
    print "response------>>",res
    return res
    
def sendMail(from_mail,to_mail,body):
    smtp_server = 'smtp.163.com'
    mail_passwd = 'passwd'
    cc_mail = ['xxx@163.com']
    print "-----------cc_mail---------------------"
    print cc_mail
    from_name = 'monitor'
    subject = u'告警'.encode('gbk')   # 以gbk编码发送,一般邮件客户端都能识别
    body = str(body)   // 此处body 需要是string 
    mail = [
        "From: %s <%s>" % (from_name, from_mail),
        "To: %s" % ','.join(to_mail),   # 转成字符串,以逗号分隔元素
        "Subject: %s" % subject,
        "Cc: %s" % ','.join(cc_mail),
        "",
        body
        ]
    msg = '\n'.join(mail)  # 这种方式先将头信息放到列表中,然后用join拼接,并以换行符分隔元素,结果就是和上面注释一样了
    try:
        s = smtplib.SMTP()
        s.connect(smtp_server, '25')
        s.login(from_mail, mail_passwd)
        s.sendmail(from_mail, to_mail+cc_mail, msg)
        s.quit()
    except smtplib.SMTPException as e:
        print "Error: %s" %e
if __name__ == "__main__":
    request_parameter = {
        "email": ["xxx@163.com", "xxx@qq.com"]}
    backResult = sendPost(data=request_parameter)
    print "main--backResult-->>",backResult
    jsonBackResult = json.loads(backResult)
    resultData = []
    if(jsonBackResult['code'] == 110):
        resultData.append(jsonBackResult['data'])
    request_parameter_json = json.loads(json.dumps(request_parameter))
    print "request_parameter_json---> ",request_parameter_json
    # print "------------start send email ------------------"
    from_mail = 'XXXX@163.com'
    to_mail = request_parameter_json['email']
    to_mail_obj = []
    for tomail in to_mail:
        to_mail_obj.append(tomail.encode('ascii'))
    print to_mail_obj
    sendMail(from_mail=from_mail,to_mail=to_mail_obj,body=resultData)
仅供参考欢迎探讨
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐