python2.7 send mail

本文介绍如何使用Python发送JSON格式数据进行远程服务认证,获取响应结果,并根据结果发送邮件通知。涉及Python的smtplib、urllib及json模块的使用。

如下实现发送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)
仅供参考欢迎探讨
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值