2012-07-07 42 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()