2014-04-20 80 views
0

此代碼可用於Mandrill API從網站發送郵件。但問題是我無法將HTML輸入到JSON中發送到正確的電子郵件地址。看看下面的代碼:在JSON中使用JavaScript變量API

<head> 
    <script type="text/javascript" src="https://mandrillapp.com/api/docs/js/mandrill.js"></script> 
    <script type="text/javascript" src="send-email.js"></script> 
</head> 
<body> 
    <input type="text" value="e-mail" id="maila"/> 
    <button onclick="sendTheMail(); return false;">Send the Mail</button> 
    <pre id="response"></pre> 
</body> 

因此,這是HTML,並在輸入字段中輸入您想要發送的郵件地址。

然後,我有以下的.js文件:

function log(obj) { 
    $('#response').text(JSON.stringify(obj)); 
} 

var m = new mandrill.Mandrill('API-KEY'); 

var mailaddress = document.getElementById("maila").value; 

var params = { 
    "message": { 
     "from_email":"[email protected]", 
     "to":[{"email":"[email protected]"}], 
     "subject": "Sending you a mail", 
     "html": "Text for the body of the mail", 
    } 
}; 

function sendTheMail() { 

    m.messages.send(params, function(res) { 
     log(res); 
    }, function(err) { 
     log(err); 
    }); 
} 

所以在這裏我得到了var mailaddress這是我想向其發送一條消息,該用戶在瀏覽器已經給郵件地址。但是現在我想讓「[email protected]」的值接受var mailaddress的變量。但只是在這裏輸入這個變量不起作用,因爲我認爲它不是JSON ...

我知道該程序的工作原理,因爲如果我在「to」中填寫郵件地址:[{「email」:「 [email protected]「}],手動發送併到達。試圖尋找論壇和谷歌,但無法找到這個解決方案..

UPDATE 我明白了,謝謝你的幫助。 getElementById必須在我想的函數內,所以我將代碼移動了一點......它看起來像是在下面。代碼現在正在工作,但我很好奇:這是不是很好的代碼,還是我必須定義一些東西?

function log(obj) { 
    $('#response').text(JSON.stringify(obj)); 
} 

var m = new mandrill.Mandrill('API-KEY'); 


function sendTheMail() { 
// Send the email! 
var mailaddress = document.getElementById("maila").value, 
recipient = [{"email": String(mailaddress)}]; 
var params = { 
    "message": { 
     "from_email":"[email protected]", 
     "to": recipient, 
     "subject": "Sending a text email from the Mandrill API", 
     "text": "I'm learning the Mandrill API at Codecademy.", 
     "autotext": true 
    } 
}; 
    m.messages.send(params, function(res) { 
     log(res); 
    }, function(err) { 
     log(err); 
    }); 
} 

回答

0
var 
    mailaddress = document.getElementById("maila").value, 
    recipients = [], 
    recipient = { "email": mailaddress }; 

recipients.push(recipient); 

var params = { 
    "message": { 
    "from_email": "[email protected]", 
    "to": recipients, 
    "subject": "Sending you a mail", 
    "html": "Text for the body of the mail", 
    } 
}; 
+0

感謝您的答覆,但似乎這個代碼是行不通的。如果我手動填寫'到',程序將工作。例如:「to」:[{「email」:「[email protected]」}]。結構(不是JSON?)或代碼中的其他位置有問題嗎?沒有可變的定製(不是HTML輸入)程序的工作原理如前所述.. – BBspark

+0

我不明白爲什麼它不應該工作。控制檯中是否有錯誤? – phylax

+0

我沒有看到..這是整個問題...得到這些錯誤:{「status」:「error」,「code」: - 1,「name」:「ValidationError」,「message」:「You必須指定一個消息值「},只要我將這段代碼片段插入到程序中:var mailaddress = document.getElementById(」maila「)。value, recipients = [], recipient = {」email「:mailaddress}; recipients.push(收件人);真的很奇怪...... – BBspark