python版webpower的edm的api接口

webpower似乎只提供php,java,.net接口,正好要用到python的接口,于是就参照php的接口写了个webpower的接口

python版:

# -*- coding: utf-8 -*-
import os,sys,traceback,time
reload(sys)
sys.setdefaultencoding('utf-8')
from suds.client import Client

class webpower(object):
    """docstring for webpower"""
    def __init__(self, arg):
        super(webpower, self).__init__()
        self.arg = arg

        self.client  = None
        self.url   = self.arg.get('url','')
        self.login = self.arg.get('login',{})
    
    def connection(self):
        '''创建连接'''
        self.client = Client(self.url)
        self.client.set_options(headers={"Content-Type":"text/xml; charset=utf-8"})
        
    def createSenderAddress(self,fromEmail = ''):
        '''
            创建发送的邮件地址
            @param fromEmail 
            @return Dict
        '''
        resultDict = {}
        try:
            if not self.client : self.connection()
            tmpResult =  self.client.service.createSenderAddress(self.login,fromEmail)

            if hasattr(tmpResult, 'statusMsg'):
                resultDict['statusMsg'] = tmpResult.statusMsg
            if hasattr(tmpResult, 'id'):
                resultDict['id'] = tmpResult.id 
        except:
            resultDict['error'] =  traceback.format_exc()
        return resultDict

    def createCampaign(self,campaignName = '',defaultSenderName='',defaultSenderAddrID=''):
        '''
            创建活动
            @param campaignName        活动名称
            @param defaultSenderName   发送者名称
            @param defaultSenderAddrID 发送的ID地址
            return Dict
        '''
        resultDict = {}
        try:
            if not self.client : self.connection()
            tmpResult =  self.client.service.createCampaign(self.login,
                0,                   #brandID
                campaignName,        #The name of the new campaign
                defaultSenderName,   #default Sender Name
                defaultSenderAddrID, #default Sender Address Id
                0,                   #default Reply Address
                'cn',                #lang
                False,               #is overall
                "",
                "",
                ""
                )
            if hasattr(tmpResult, 'status'):
                resultDict['status'] = tmpResult.status
            if hasattr(tmpResult, 'id'):
                resultDict['id'] = tmpResult.id
            
        except:
            resultDict['error'] = traceback.format_exc()

        return resultDict


    def createMailing(self,campaignID='',title = '',fromName ='',html =''):
        '''
            创建活动对应的邮件内容
            @param campaignID 活动ID
            @param title      活动标题/活动唯一标题
            @param fromName   来源名称
            @param html       发送的html内容
            @return Dict
        '''
        resultDict = {}
        try:
            if not self.client : self.connection()
            mailingName = '%s_%s' % (title, int(time.time()))
            tmpResult =  self.client.service.createMailing(self.login,
                campaignID,       #campaign ID
                mailingName,      #mailing Name
                'cn',             #lang
                title,            #subject
                fromName,         #fromName
                0,                #sender ID
                html              #html
                )

            if hasattr(tmpResult, 'status'):
                resultDict['status'] = tmpResult.status
            if hasattr(tmpResult, 'id'):
                resultDict['id'] = tmpResult.id
        except:
            resultDict['error'] = traceback.format_exc()
        return resultDict

    def getMailingStatsSummary(self,campaignID='',mailingID=''):
        '''
            通过邮件ID来获取该邮件的发送情况
            @param campaignID 品牌ID
            @param mailingID  邮件ID
            @return Dict
        '''
        resultDict = {}
        try:
            if not self.client : self.connection()
            tmpResult =  self.client.service.getMailingStatsSummary(self.login,
                campaignID,     #campaign ID
                mailingID,      #mailing ID
                )
            resultDict['result'] = dict(tmpResult)
        except:
            resultDict['error'] = traceback.format_exc()
        return resultDict
                
    def addRecipient(self,campaignID ='',groupIDs =[],recipientData = []):
        '''
            增加一条数据到组
            @param campaignID    品牌ID
            @param groupIDs      组ID  
            @param recipientData 添加的数据集 例: [{'name':'email','value':'xx@shopex.cn'}]
            return Dict
        '''
        resultDict = {}
        try:
            if not self.client : self.connection()

            #数组结构
            arrayofint = self.client.factory.create('ArrayOfIntType')
            arrayofint.int = groupIDs
            #NewRecipient 结构
            NewRecipientDataType = self.client.factory.create('NewRecipientType')
            NewRecipientDataType.fields = recipientData

            tmpResult =  self.client.service.addRecipient(self.login,
                campaignID,              #campaign ID
                arrayofint,              #groupIDs arrayofint1
                NewRecipientDataType,    #recipient Data recipientData
                True,
                True
                )
            resultDict['result'] = dict(tmpResult)
        except:
            resultDict['error'] = traceback.format_exc()
        return resultDict

    def addGroup(self,campaignID ='',name = ''):
        '''
            新增组
            @param campaignID 品牌ID
            @param name       组名称
            @return Dict
        '''
        resultDict = {}
        try:
            if not self.client : self.connection()

            #NewGroupType 
            NewGroupType = self.client.factory.create('NewGroupType')
            NewGroupType.name = name
            NewGroupType.is_test = True
            NewGroupType.remarks = ''

            tmpResult =  self.client.service.addGroup(self.login,
                campaignID,              #campaign ID
                NewGroupType,              #New Group Type
                )
            resultDict['result'] = dict(tmpResult)
        except:
            resultDict['error'] = traceback.format_exc()
        return resultDict

    def sendMailing(self,campaignID ='',mailingID='',resultsEmail='',groupIDs=[],callbackUrl=''):
        '''
            发送邮件
            @param campaignID   品牌ID
            @param mailingID    邮件ID
            @param isTest       是否是测试
            @param resultsEmail 结果email
            @param groupIDs     组ID
            @param callbackUrl  返回的URL
            @return Dict
        '''
        resultDict = {}
        try:
            if not self.client : self.connection()

            #groupIDs 
            ArrayOfIntType = self.client.factory.create('ArrayOfIntType')
            ArrayOfIntType.int = groupIDs
            #langs
            ArrayOfStringType = self.client.factory.create('ArrayOfStringType')
            ArrayOfStringType.string = ['cn']


            tmpResult =  self.client.service.sendMailing(self.login,
                campaignID,       #campaign ID
                mailingID,        #mailing ID
                False,            #is test
                resultsEmail,     #results Email
                ArrayOfIntType,   #group ids
                0,
                ArrayOfStringType,#langs
                '',
                callbackUrl
                )
            resultDict['result'] = dict(tmpResult)
        except:
            resultDict['error'] = traceback.format_exc()
        return resultDict

    def sendSingleMailing(self,campaignID='',mailingID='',recipientID=''):
        '''
            发送单个EMAIL
            @param campaignID 品牌ID
            @param mailingID  发送的EMAIL地址
            @param recipientID recipient id
            @return Dict
        '''
        resultDict = {}
        try:
            if not self.client : self.connection()

            tmpResult =  self.client.service.sendSingleMailing(self.login,
                campaignID,       #campaign ID
                mailingID,        #mailing ID
                recipientID ,     #is test
                )

            resultDict['result'] = {'status':tmpResult}
        except:
            resultDict['error'] = traceback.format_exc()
        return resultDict


if __name__ == '__main__':
    arg = {
        'login' : {'username':'******','password':'******'},
        'url'   : 'http://******.dmdelivery.com/x/soap-v4/wsdl.php'
    }
    #print webpower(arg).createSenderAddress('wangzhaoming@shopex.cn')
    #print webpower(arg).createCampaign('1sssss')
    #print webpower(arg).createMailing(237,'subjecttest22','67272740','<html><body>test</body></html>')
    #print webpower(arg).getMailingStatsSummary(237,1745)
    #print webpower(arg).addRecipient(237,[81],[{'name':'email','value':'test1@shopex.cn'}])
    #print webpower(arg).addGroup(237,'create003')
    #print webpower(arg).sendMailing(237,1745,'wangzhaoming@shopex.cn',[81],callbackUrl='http://callback.webpower-inc.com/callback.php')
    #print webpower(arg).sendSingleMailing(237,1745,3)
    pass



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值