2017-09-15 98 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