如下实现发送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)
仅供参考欢迎探讨