node example enviar javascript html html-email

example - send email javascript



¿Cómo envío un correo electrónico con JavaScript sin abrir el cliente de correo? (7)

Creo que puedes usar smtpjs.com

Estoy escribiendo una página HTML con un botón de registro que debería enviar un correo electrónico en silencio sin abrir el cliente de correo local. Aquí está mi HTML:

<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>

... y aquí está mi código JavaScript:

<script type="text/javascript"> function sendMail() { var link = ''mailto:[email protected]?subject=Message from '' +document.getElementById(''email_address'').value +''&body=''+document.getElementById(''email_address'').value; window.location.href = link; } </script>

El código anterior funciona ... pero abre el cliente de correo electrónico local. Si elimino la declaración de return en el atributo onclick como este:

<form method="post" action=""> <input type="text" id="email_address" name="name" placeholder="Enter your email address..." required> <button onclick="sendMail()">Send Email</button> </form>

... entonces el correo electrónico no se envía en absoluto. ¿Me estoy perdiendo de algo?

Cualquier ayuda sería muy apreciada :-)


Necesita un servidor de soporte para lograr esto. Básicamente, su formulario debe publicarse (AJAX también está bien) en el servidor y ese servidor debe conectarse a través de SMTP a algún proveedor de correo y enviar ese correo electrónico.

Incluso si era posible enviar correos electrónicos directamente usando JavaScript (es decir, de la computadora del usuario), el usuario todavía tendría que conectarse a algún servidor SMTP (como gmail.com), proporcionar credenciales SMTP, etc. Esto normalmente se maneja en el lado del servidor (en su aplicación), que conoce estas credenciales.


Necesitas hacerlo directamente en un servidor. Pero una mejor manera es usar PHP. He escuchado que PHP tiene un código especial que puede enviar correos electrónicos directamente sin abrir el cliente de correo.


No puede hacer que el navegador del usuario envíe mensajes de correo electrónico de forma silenciosa. Eso sería un horrible problema de seguridad, ya que cualquier sitio web podría usar su sistema como retransmisor de spam y / o recolectar su dirección de correo electrónico.

Debe realizar una solicitud HTTP a un proceso del lado del servidor (escrito en el idioma de su elección) que envía el correo desde su servidor.


No puede hacerlo solo con la secuencia de comandos del lado del cliente ... podría realizar una llamada AJAX a algún código del lado del servidor que enviará un correo electrónico ...


Tiene que haber algún tipo de marco de backend para enviar el correo electrónico. Esto se puede hacer a través de PHP / ASP.NET, o con el cliente de correo local. Si desea que el usuario no vea nada, la mejor manera es acceder a ellos mediante una llamada AJAX a un archivo send_email separado.


Directamente del cliente

Enviar un correo electrónico utilizando solo JavaScript

in short: 1. register for Mandrill to get an API key 2. load jQuery 3. use $.ajax to send an email

Me gusta esto -

function sendMail() { $.ajax({ type: ''POST'', url: ''https://mandrillapp.com/api/1.0/messages/send.json'', data: { ''key'': ''YOUR API KEY HERE'', ''message'': { ''from_email'': ''[email protected]'', ''to'': [ { ''email'': ''[email protected]'', ''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 }); }

https://medium.com/design-startups/b53319616782

Nota: tenga en cuenta que su clave API es visible para cualquier persona, por lo que cualquier usuario malintencionado puede usar su clave para enviar correos electrónicos que pueden consumir su cuota.

Indirecto a través de su servidor - seguro

Para superar la vulnerabilidad anterior, puede modificar su propio servidor para enviar el correo electrónico después de la autenticación basada en sesión.

node.js - https://www.npmjs.org/package/node-mandrill

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: ''[email protected]'', 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 ); });

y luego use $ .ajax en el cliente para llamar a su API de correo electrónico.