我最近开始使用Mandrill进行客户端电子邮件发送。客户端的网站不使用任何服务器端程序,因此每个逻辑都必须在客户端。
我现在所拥有的是Chrome,FireFox,IE10,但不适用于LTE IE9和Android< 4.0既不是IOS:\
m = new mandrill.Mandrill("APIKEY", true)
m.call "messages/send", {
message:
html: createHtml()
subject: "subj"
from_email: "sender@example.dk",
from_name: "From",
to: [
email: "user@example.com"
name: "User"
]
}, (()->
console.log "success"
@
), ()->
console.log "error"
@
在这段代码中,我使用的是JS Mandrill API wrapper,但是我尝试使用jQuery ajax POST-ing并得到了相同的结果。
jQuery版本:
$.ajax
type: "POST"
url: "https://mandrillapp.com/api/1.0/messages/send.json"
data:
key: "APIKEY"
message:
html: createHtml()
subject: "subject"
from_email: "sender@example.dk",
from_name: "From",
to: [
email: "user@example.com"
name: "User"
]
任何人都可以帮助我,如何修复跨域API调用Mandrill?
答案 0 :(得分:2)
您的代码似乎有效,因此您可能遇到了浏览器兼容性问题。
Mandrill API包装器在底层使用本机XMLHttpRequest
,因此它可能与旧版浏览器不兼容。如果你需要支持IE< 9,你将需要一个1.x版本的jQuery - 所有2.x版本都不再支持旧版浏览器了(参见http://jquery.com/browser-support/)。
我在JSBin上发布了一个工作示例:http://jsbin.com/UyehELo/2/edit。仅测试iOS,因为遗憾的是我无法访问IE或Android。该示例允许您在移动设备上查看API响应,而无法轻松访问控制台。
PS。请记住,在客户端使用mandrill通常不是最好的主意,因为您公开公开您的API密钥,以便任何人都可以接受它并代表您发送电子邮件。