如何使用 JavaScript 使用 Mandrill 发送电子邮件?
How to send an email with Mandrill using JavaScript?
我已按照 this 指南使用 JavaScript 和 Mandrill 发送电子邮件,但在我的控制台中收到此错误:Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://mandrillapp.com/api/1.0/messages/send.json. This can be fixed by moving the resource to the same domain or enabling CORS.
这是我的代码:
$('#submitEmail').click(function() {
$.ajax({
type: "POST",
url: "https://mandrillapp.com/api/1.0/messages/send.json",
data: {
'key': 'my_api_key',
'message': {
'from_email': 'test@hotmail.com',
'to': [{
'email': 'test@gmail.com',
'name': 'RECIPIENT NAME (OPTIONAL)',
'type': 'to'
}],
'autotext': 'true',
'subject': 'test',
'html': 'test'
}
}
}).done(function(response) {
console.log(response);
});
});
我做错了什么?
您无法从浏览器访问 Mandrill API - 这是出于安全原因设计的。查看您的 API 密钥将如何暴露给访问您网站的任何人?
您需要向您的服务器发出 AJAX 请求,然后从您的后端应用程序代码调用 Mandrill API。
与其发出 POST 请求,不如在 <head>
:
的 <script>
标签中包含 Mandrill API
<script type="text/javascript" src="path_to_locally_stored_copy_of_mandrill_API"></script>
然后您可以在您的 JS 文件中访问它:
var m = new mandrill.Mandrill('your_api_key'); // This will be public
function sendTheMail(){
m.messages.send({
"message": {
"from_email": "your_email_address",
"from_name": "your_name",
"to":[{"email": "someone's_email_address", "name": "someone's_name"}], // Array of recipients
"subject": "optional_subject_line",
"text": "Text to be sent in the body" // Alternatively, use the "html" key to send HTML emails rather than plaintext
}
});
}
但是,请注意,这会将您的 API 暴露给 public,因为可以使用开发工具从客户端访问它。这会使您容易受到网络钓鱼漏洞的攻击,有人可能会滥用您的密钥。
我还会看一下 full Mandrill docs 的 send
。
太棒了,这是使用 Jquery 发送表单的解决方案。 :)
我试图在我的网站上使用 jquery + mandrill 创建一个联系表。我没有发现以上答案有帮助(没有冒犯兄弟)所以我希望我的回答可以解决这个问题。我从我的好朋友和开发人员 Thomas Lane @d00by 那里得到了一些帮助。
请看下面我的表格。在我的表格下方 javascript.
- 创建表单
- 使用ajax提交表单
- return 假
- 提交时调用函数。
要使用 mandrill,您需要一个 API 密钥。
<form id="contact-form" method="POST" action="" onsubmit="return submitContactForm();" class="margin-top" role="form">
<div class="row">
<div class="form-group">
<i class="fa fa-check-circle fa-2 check" aria-hidden="true"></i>
<input id="form_name" type="text" name="name" class="form-control" placeholder="Full Name" required="required" data-error="Firstname is required.">
</div>
</div>
<div class="row">
<div class="form-group">
<i class="fa fa-check-circle fa-2 check" aria-hidden="true"></i>
<input id="form_email" type="text" name="name" class="form-control" placeholder="Email" required="required" data-error="E-mail is required.">
</div>
</div>
<div class="row">
<div class="form-group">
<i class="fa fa-check-circle fa-2 check" aria-hidden="true"></i>
<input id="form_phone" type="text" name="name" class="form-control" placeholder="Phone" required="required" data-error="Phone Number is required.">
</div>
</div>
<div class="row">
<div class="form-group">
<i class="fa fa-check-circle fa-2 check" aria-hidden="true"></i>
<textarea id="form_message" name="message" class="form-control" placeholder="Message" rows="2" required="required" data-error="Please,leave us a message."></textarea>
</div>
</div>
<button class="btn btn-primary text-center submit" type="submit">Send</button>
</form>
function submitContactForm() {
/*var name = $('#form_name').val();
var email = $('#form_email').val();
var phone = $('#form_phone').val();
var message =$('#form_message').val();*/
//this is the html template. You can also do it as used above. But is much simpler done as below
var htmlMessage = 'Contact form<br/>' +
'Name: '+$('#form_name').val()+'<br/>'+
'EMail: '+$('#form_email').val()+'<br/>'+
'Message<br/>'+
$('#form_message').val();
//submit the form using ajax
$.ajax({
type: "POST",
url: "https://mandrillapp.com/api/1.0/messages/send.json",
data: {
"key": 'Your API key here',
"message": {
"from_email": 'your email',
"to": [
{
"email": 'form email',
"name": 'name',
"type": 'to'
}
],
"subject": 'Subject',
"html": htmlMessage
}
}
});
return false;
}
我已按照 this 指南使用 JavaScript 和 Mandrill 发送电子邮件,但在我的控制台中收到此错误:Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://mandrillapp.com/api/1.0/messages/send.json. This can be fixed by moving the resource to the same domain or enabling CORS.
这是我的代码:
$('#submitEmail').click(function() {
$.ajax({
type: "POST",
url: "https://mandrillapp.com/api/1.0/messages/send.json",
data: {
'key': 'my_api_key',
'message': {
'from_email': 'test@hotmail.com',
'to': [{
'email': 'test@gmail.com',
'name': 'RECIPIENT NAME (OPTIONAL)',
'type': 'to'
}],
'autotext': 'true',
'subject': 'test',
'html': 'test'
}
}
}).done(function(response) {
console.log(response);
});
});
我做错了什么?
您无法从浏览器访问 Mandrill API - 这是出于安全原因设计的。查看您的 API 密钥将如何暴露给访问您网站的任何人?
您需要向您的服务器发出 AJAX 请求,然后从您的后端应用程序代码调用 Mandrill API。
与其发出 POST 请求,不如在 <head>
:
<script>
标签中包含 Mandrill API
<script type="text/javascript" src="path_to_locally_stored_copy_of_mandrill_API"></script>
然后您可以在您的 JS 文件中访问它:
var m = new mandrill.Mandrill('your_api_key'); // This will be public
function sendTheMail(){
m.messages.send({
"message": {
"from_email": "your_email_address",
"from_name": "your_name",
"to":[{"email": "someone's_email_address", "name": "someone's_name"}], // Array of recipients
"subject": "optional_subject_line",
"text": "Text to be sent in the body" // Alternatively, use the "html" key to send HTML emails rather than plaintext
}
});
}
但是,请注意,这会将您的 API 暴露给 public,因为可以使用开发工具从客户端访问它。这会使您容易受到网络钓鱼漏洞的攻击,有人可能会滥用您的密钥。
我还会看一下 full Mandrill docs 的 send
。
太棒了,这是使用 Jquery 发送表单的解决方案。 :)
我试图在我的网站上使用 jquery + mandrill 创建一个联系表。我没有发现以上答案有帮助(没有冒犯兄弟)所以我希望我的回答可以解决这个问题。我从我的好朋友和开发人员 Thomas Lane @d00by 那里得到了一些帮助。
请看下面我的表格。在我的表格下方 javascript.
- 创建表单
- 使用ajax提交表单
- return 假
- 提交时调用函数。
要使用 mandrill,您需要一个 API 密钥。
<form id="contact-form" method="POST" action="" onsubmit="return submitContactForm();" class="margin-top" role="form">
<div class="row">
<div class="form-group">
<i class="fa fa-check-circle fa-2 check" aria-hidden="true"></i>
<input id="form_name" type="text" name="name" class="form-control" placeholder="Full Name" required="required" data-error="Firstname is required.">
</div>
</div>
<div class="row">
<div class="form-group">
<i class="fa fa-check-circle fa-2 check" aria-hidden="true"></i>
<input id="form_email" type="text" name="name" class="form-control" placeholder="Email" required="required" data-error="E-mail is required.">
</div>
</div>
<div class="row">
<div class="form-group">
<i class="fa fa-check-circle fa-2 check" aria-hidden="true"></i>
<input id="form_phone" type="text" name="name" class="form-control" placeholder="Phone" required="required" data-error="Phone Number is required.">
</div>
</div>
<div class="row">
<div class="form-group">
<i class="fa fa-check-circle fa-2 check" aria-hidden="true"></i>
<textarea id="form_message" name="message" class="form-control" placeholder="Message" rows="2" required="required" data-error="Please,leave us a message."></textarea>
</div>
</div>
<button class="btn btn-primary text-center submit" type="submit">Send</button>
</form>
function submitContactForm() {
/*var name = $('#form_name').val();
var email = $('#form_email').val();
var phone = $('#form_phone').val();
var message =$('#form_message').val();*/
//this is the html template. You can also do it as used above. But is much simpler done as below
var htmlMessage = 'Contact form<br/>' +
'Name: '+$('#form_name').val()+'<br/>'+
'EMail: '+$('#form_email').val()+'<br/>'+
'Message<br/>'+
$('#form_message').val();
//submit the form using ajax
$.ajax({
type: "POST",
url: "https://mandrillapp.com/api/1.0/messages/send.json",
data: {
"key": 'Your API key here',
"message": {
"from_email": 'your email',
"to": [
{
"email": 'form email',
"name": 'name',
"type": 'to'
}
],
"subject": 'Subject',
"html": htmlMessage
}
}
});
return false;
}