如何在不打开邮件客户端的情况下使用JavaScript发送电子邮件?
我正在编写一个带有注册按钮的HTML页面,该页面只需默默地发送电子邮件,而无需打开本地邮件客户端。这是我的HTML:如何在不打开邮件客户端的情况下使用JavaScript发送电子邮件?,javascript,html,html-email,Javascript,Html,Html Email,我正在编写一个带有注册按钮的HTML页面,该页面只需默默地发送电子邮件,而无需打开本地邮件客户端。这是我的HTML: <form method="post" action=""> <input type="text" id="email_address" name="name" placeholder="Enter your email address..." required> <button onclick="sendMail(); return
<form method="post" action="">
<input type="text" id="email_address" name="name" placeholder="Enter your email address..." required>
<button onclick="sendMail(); return false">Send Email</button>
</form>
。。。那么电子邮件就根本不发送了。我错过什么了吗
非常感谢您的帮助:-)您不能让用户的浏览器以静默方式发送电子邮件。这将是一个可怕的安全问题,因为任何网站都可能将其系统用作垃圾邮件中继和/或获取其电子邮件地址
您需要向服务器端进程发出HTTP请求(以您选择的语言编写),该进程从您的服务器发送邮件。您需要服务器端支持来实现这一点。基本上,您的表单应该被发布(AJAX也可以)到服务器,服务器应该通过SMTP连接到某个邮件提供商并发送该电子邮件
即使可以直接使用JavaScript(即从用户计算机)发送电子邮件,用户仍必须连接到某些SMTP服务器(如gmail.com)、提供SMTP凭据等。这通常在服务器端(在应用程序中)处理,它知道这些凭据。您不能只使用客户端脚本。。。您可以对一些服务器端代码进行AJAX调用,以发送电子邮件…需要某种类型的后端框架来发送电子邮件。这可以通过PHP/ASP.NET或本地邮件客户端完成。如果您不希望用户看到任何内容,最好的方法是通过AJAX调用单独的发送电子邮件文件来访问这些内容。您需要直接在服务器上执行此操作。但更好的方法是使用PHP。我听说PHP有一个特殊的代码,可以不打开邮件客户端直接发送电子邮件。直接从客户端发送。
像这样-
function sendMail() {
$.ajax({
type: 'POST',
url: 'https://mandrillapp.com/api/1.0/messages/send.json',
data: {
'key': 'YOUR API KEY HERE',
'message': {
'from_email': 'YOUR@EMAIL.HERE',
'to': [
{
'email': 'RECIPIENT@EMAIL.HERE',
'name': 'RECIPIENT NAME (OPTIONAL)',
'type': 'to'
}
],
'autotext': 'true',
'subject': 'YOUR SUBJECT HERE!',
'html': 'YOUR EMAIL CONTENT HERE! YOU CAN USE HTML!'
}
}
}).done(function(response) {
console.log(response); // if you're into that sorta thing
});
}
注意:请记住,您的API密钥对任何人都是可见的,因此任何恶意用户都可能使用您的密钥发送电子邮件,从而耗尽您的配额
通过您的服务器间接进行-安全
要克服上述漏洞,您可以修改自己的服务器,以便在基于会话的身份验证后发送电子邮件 node.js-
var-mandrill=require('node-mandrill')('');
函数sendmail(\u名称、\u电子邮件、\u主题、\u消息){
mandrill(“/messages/send”{
信息:{
收件人:[{email:_email,name:_name}],
从您的电子邮件:'noreply@yourdomain.com',
主题:_主题,
文本:_消息
}
},函数(错误,响应){
if(错误)console.log(错误);
else console.log(响应);
});
}
//定义您自己的指向服务器的电子邮件api。
app.post('/api/sendmail/',函数(req,res){
var_name=req.body.name;
var_email=req.body.email;
var_subject=req.body.subject;
var_message=req.body.message;
//实施垃圾邮件保护或检查。
sendEmail(\u姓名、\u电子邮件、\u主题、\u消息);
});
然后在客户端使用$.ajax调用您的电子邮件API。我认为您可以使用好的,PHP可以很容易地做到这一点 这可以通过PHP
mail()
函数完成。下面是一个简单函数的样子:
<?php
$to_email = 'name@company.com';
$subject = 'Testing PHP Mail';
$message = 'This mail is sent using the PHP mail function';
$headers = 'From: noreply@company.com';
mail($to_email,$subject,$message,$headers);
?>
我们现在让它成为一个单独的PHP文件,例如sendmail.PHP
然后,将在表单提交时使用此文件,使用表单的action
属性,如:
希望我能提供帮助您只能在服务器上执行此操作。是的,将表单发布到您的服务器并由服务器发送邮件要执行所需操作,您需要在服务器中调用接收邮件信息并依赖smtp服务器的方法,以便从服务器发送邮件。使用该mailto不行。这很有用@cristi_b:使用本地电子邮件客户端。由于php在服务器上运行,因此使用php并不比在服务器上运行要好!PHP无法直接从用户系统发送电子邮件。电子邮件将从服务器发送。这没有什么特别的,任何编程语言都可以使用。PHP的主要优点是它可以在最便宜的主机上使用,这将是完美的,因为服务器端也可以托管邮件服务器。话虽如此,我们的想法是使用JavaScript发布请求,然后在服务器端有一个脚本,可以通过本地邮件服务器发送电子邮件。我将在Web上查找一个示例……我们可以使用标准JavaScript来实现吗?请选中此项以避免使用jQuery
in short:
1. register for Mandrill to get an API key
2. load jQuery
3. use $.ajax to send an email
function sendMail() {
$.ajax({
type: 'POST',
url: 'https://mandrillapp.com/api/1.0/messages/send.json',
data: {
'key': 'YOUR API KEY HERE',
'message': {
'from_email': 'YOUR@EMAIL.HERE',
'to': [
{
'email': 'RECIPIENT@EMAIL.HERE',
'name': 'RECIPIENT NAME (OPTIONAL)',
'type': 'to'
}
],
'autotext': 'true',
'subject': 'YOUR SUBJECT HERE!',
'html': 'YOUR EMAIL CONTENT HERE! YOU CAN USE HTML!'
}
}
}).done(function(response) {
console.log(response); // if you're into that sorta thing
});
}
var mandrill = require('node-mandrill')('<your API Key>');
function sendEmail ( _name, _email, _subject, _message) {
mandrill('/messages/send', {
message: {
to: [{email: _email , name: _name}],
from_email: 'noreply@yourdomain.com',
subject: _subject,
text: _message
}
}, function(error, response){
if (error) console.log( error );
else console.log(response);
});
}
// define your own email api which points to your server.
app.post( '/api/sendemail/', function(req, res){
var _name = req.body.name;
var _email = req.body.email;
var _subject = req.body.subject;
var _messsage = req.body.message;
//implement your spam protection or checks.
sendEmail ( _name, _email, _subject, _message );
});
<?php
$to_email = 'name@company.com';
$subject = 'Testing PHP Mail';
$message = 'This mail is sent using the PHP mail function';
$headers = 'From: noreply@company.com';
mail($to_email,$subject,$message,$headers);
?>
<?php
function sanitize_my_email($field) {
$field = filter_var($field, FILTER_SANITIZE_EMAIL);
if (filter_var($field, FILTER_VALIDATE_EMAIL)) {
return true;
} else {
return false;
}
}
$to_email = 'name@company.com';
$subject = 'Testing PHP Mail';
$message = 'This mail is sent using the PHP mail ';
$headers = 'From: noreply@company.com';
//check if the email address is invalid $secure_check
$secure_check = sanitize_my_email($to_email);
if ($secure_check == false) {
echo "Invalid input";
} else { //send email
mail($to_email, $subject, $message, $headers);
echo "This email is sent using PHP Mail";
}
?>