2017-09-15 97 views
1

我想使用mailgun从浏览器发送简单的电子邮件。我从postman发送工作电子邮件和下载代码的功能我设法让JavaScript代码是:从浏览器mailgun发送邮件

var data = new FormData(); 
data.append("from", "Mailgun Sandbox <[email protected]>"); 
data.append("to", "Example <[email protected]>"); 
data.append("subject", "Hello from Mailgun"); 
data.append("text", "Congratulations Example, you just sent an email with Mailgun! You are truly awesome!"); 

var xhr = new XMLHttpRequest(); 
xhr.withCredentials = true; 

xhr.addEventListener("readystatechange", function() { 
    if (this.readyState === 4) { 
    console.log(this.responseText); 
    } 
}); 

xhr.open("POST", "https://api:[email protected]/v3/sandbox1985406854ad9e8b8dfe094531fa41e8.mailgun.org/messages"); 
xhr.setRequestHeader("cache-control", "no-cache"); 
xhr.setRequestHeader("postman-token", "0a3ad9d5-22b5-6308-d6e7-59f66360fa26"); 

xhr.send(data); 

但是,当我从我的浏览器(firefox)执行该代码它什么都不做。我究竟做错了什么?

改变从

https://api:[email protected]/v3/sandbox1985406854ad9e8b8dfe094531fa41e8.mailgun.org/messages

网址

https://api.mailgun.net/v3/sandbox1985406854ad9e8b8dfe094531fa41e8.mailgun.org/messages

似乎执行,是api:key-xx部分无效?

+0

除非你指定了协议和端口,否则你不能在URL中冒号,所以'api:key'是无效的。浏览器试图通过端口'key-75a05cfds8c66bd1y4c3e854305438e5 @ api.mailgun.net'(它不是一个有效的TCP端口)连接到域'api',并要求提供页面'/v3/sandbox1985406854ad9e8b8dfe094531fa41e8.mailgun.org/消息“使用”https“协议。 – jdgregson

+0

你有没有想过这个?我期待和你一样做同样的事情。 – jkupczak

回答

1

不要这样做。这不适合使用Mailgun API。

将此Javascript发送给浏览器,即表示您允许他们访问您的Mailgun API密钥。此API密钥不受任何限制 - 恶意客户可能会滥用密钥,将无限数量的消息发送给他们想要的任何收件人,这可能会浪费大量帐单和/或阻止您的帐户被垃圾邮件阻止。

在服务器端使用Mailgun API。如果您需要通过Javascript发送消息,请在您的应用程序中创建一个端点,并在适当的位置调用Mailgun API。

+1

是的,我知道这很糟糕,但在这一点上,我更加好奇它为什么不工作而不是工作。我已经创建了一个已经发送邮件的后端服务器。 – hupakeetje

+0

我很好奇如何让它在浏览器中工作。我的实现将它作为Chrome扩展。此时,唯一可以访问API密钥的人是将提供自己的密钥的最终用户。 – jkupczak