python版webpower的edm的api接口

来源:互联网 发布:杨元元之死 知乎 编辑:程序博客网 时间:2024/05/16 14:26

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

python版:

# -*- coding: utf-8 -*-import os,sys,traceback,timereload(sys)sys.setdefaultencoding('utf-8')from suds.client import Clientclass 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 resultDictif __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


原创粉丝点击