如何仅从客户端使用 Mandrillapp API?
Posted
技术标签:
【中文标题】如何仅从客户端使用 Mandrillapp API?【英文标题】:How to use Mandrillapp API from only client side? 【发布时间】:2013-10-15 05:36:57 【问题描述】:我最近开始使用 Mandrill 进行客户端电子邮件发送。客户端的网站没有使用任何服务器端程序,所以每个逻辑都必须在客户端。
我现在在 Chrome、FireFox、IE10 中工作,但在 LTE IE9 和 android
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"
]
谁能帮帮我,如何修复对 Mandrill 的跨域 API 调用?
【问题讨论】:
【参考方案1】:您的代码似乎有效,因此您可能遇到了浏览器兼容性问题。
Mandrill API 包装器在底层使用原生 XMLHttpRequest
,因此它可能与旧版浏览器不兼容。如果您需要支持 IEhttp://jquery.com/browser-support/)。
我在 JSBin 上发布了一个工作示例:http://jsbin.com/UyehELo/2/edit。仅测试了 ios,因为不幸的是我无法访问 IE 或 Android。该示例还允许您在无法轻松访问控制台的移动设备上查看 API 响应。
PS。请记住,在客户端使用 mandrill 通常不是最好的主意,因为您会公开您的 API 密钥,以便任何人都可以获取它并代表您发送电子邮件。
【讨论】:
谢谢,我回家后会检查的:) 顺便说一句。我使用 jQuery 1.10.2,所以这应该不是问题。使用 Mandrill,您可以指定允许发送电子邮件的 IP,因此“黑客”只能从同一站点使用它以上是关于如何仅从客户端使用 Mandrillapp API?的主要内容,如果未能解决你的问题,请参考以下文章
使用 axios.get 方法加载页面时,如何仅从 API 获取数据一次?