2012-07-07 76 views
0

我正在使用MailChimps inline-css格式:http://beaker.mailchimp.com/inline-css。它在准备一个HTML文件以用于发送电子邮件方面做得很好。curl html文件通过mailchimp inlineCss API

我有一个API密钥。我更喜欢不必为只有一个API调用运行他们的PHP应用程序。如果可以使用curl来访问他们的inlineCss API?如果是这样,语法是什么?

这里是文档页面:http://apidocs.mailchimp.com/api/1.2/inlinecss.func.php

参见行:2096这个要点:https://gist.github.com/740362

我的钥匙看起来像: f1b46 ????????????? ?????? f2d5-US2

这里是我会想达到什么样的一个开始:

curl post -d @input.html apiKey=xxxxxxxx "http://us1.api.mailchimp.com/1.2/" 

谢谢

回答

1

这就是我为任何寻找类似解决方案而劈头盖脸的人。评论,其他选项欢迎:

进口OS 进口重新 进口的urllib 进口机械化 进口xml.sax.saxutils从xml.sax.saxutils saxutils 导入UNESCAPE

try: 
    issueRoot = os.environ['newslettersroot'] + os.environ['currYear'] + '/' + os.environ['issueRoot'] + '/' 
except KeyError: 
    print "Please run init.bat" 
    sys.exit(1) 

srcEmailFilename = 'email.html' 
dstEmailFilename = 'email_inline_css.html' 


# retrieve <body> section only 
html = open(issueRoot + srcEmailFilename, 'rb').read() 
html = re.findall("(?si)<body.*?</body>", html)[0] 


# use mailchimp inlineCss site to inject class rules into html tags 
response = mechanize.urlopen("http://beaker.mailchimp.com/inline-css") 
# retrieve form 
form = mechanize.ParseResponse(response, backwards_compat=False)[0] 

form["html"] = html 
# form["strip"] = "checked" 

# submit form and retrieve result 
html = mechanize.urlopen(form.click()).read() 


match = re.search('<textarea name="text" cols="100" rows="12">(.*?)</textarea>', html, re.DOTALL | re.IGNORECASE | re.MULTILINE) 

if not match: 
    print html 
    exit("Expected to find output from mailchimp.") 

# clean up output 
html = match.group(1) 
html = saxutils.unescape(html) 
html = urllib.unquote_plus(html) 
html = unescape(html, {"&apos;": "'", "&quot;": '"'}) 
html = html.replace('&amp;', '&').replace('%2F', '/').replace('%3A', ':') 


# @sed -r 's/ class="[a-zA-Z0-9-]+"//g' %newslettersroot%%currYear%\%issueRoot%\email_inlinedcss.html > %newslettersroot%%currYear%\%issueRoot%\email_removedstyle.html 

#replace class tags 
html = re.sub(r'(?sim)\s*class="[a-zA-Z0-9-]+"', "", html) 

fh = open(issueRoot + dstEmailFilename, 'wb') 
fh.write(html) 
fh.close()