Quiero que mi sitio web tenga la capacidad de enviar un correo electrónico sin actualizar la página. Entonces quiero usar Javascript.
<form action="javascript:sendMail();" name="pmForm" id="pmForm" method="post">
Enter Friend's Email:
<input name="pmSubject" id="pmSubject" type="text" maxlength="64" style="width:98%;" />
<input name="pmSubmit" type="submit" value="Invite" />
Aquí es cómo quiero llamar a la función, pero no estoy seguro de qué poner en la función de JavaScript. De la investigación que hice, encontré un ejemplo que usa el método mailto, pero entiendo que en realidad no se envía directamente desde el sitio.
Entonces mi pregunta es dónde puedo encontrar qué poner dentro de la función de JavaScript para enviar un correo electrónico directamente desde el sitio web.
function sendMail() {
/* ...code here... */
}
javascript
email
usuario906357
fuente
fuente
Respuestas:
No puede enviar un correo electrónico directamente con javascript.
Sin embargo, puede abrir el cliente de correo del usuario:
También hay algunos parámetros para completar previamente el tema y el cuerpo:
Otra solución sería hacer una llamada ajax a su servidor, para que el servidor envíe el correo electrónico. Tenga cuidado de no permitir que nadie envíe ningún correo electrónico a través de su servidor.
fuente
window.location.href
(como en esta respuesta: stackoverflow.com/questions/271171/… ) para abrir el cliente de correo electrónico y no deja esa ventana vacía cuando el usuario ha terminado con el correo electrónico.subject
ybody
variables o son el texto real que estará en los campos?window.open( String( 'mailto:recipient^example.com' ).replace('^', '@') );
confundiría a los robots de spamIndirecto a través de su servidor - Llamar a API de terceros - seguro y recomendado
Su servidor puede llamar a la API de terceros después de una autenticación y autorización adecuadas. Las claves API no están expuestas al cliente.
node.js - https://www.npmjs.org/package/node-mandrill
y luego use use $ .ajax en el cliente para llamar a su API de correo electrónico.
Directamente desde el cliente - Llamar a API de terceros - no recomendado
Enviar un correo electrónico usando solo JavaScript
Me gusta esto -
https://medium.com/design-startups/b53319616782
Nota: Tenga en cuenta que su clave de 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.
fuente
No pude encontrar una respuesta que realmente satisficiera la pregunta original.
Creé un servicio gratuito simple que le permite realizar una solicitud HTTP POST estándar para enviar un correo electrónico. Se llama PostMail , y simplemente puede publicar un formulario, usar Javascript o jQuery. Cuando te registras, te proporciona un código que puedes copiar y pegar en tu sitio web. Aquí hay unos ejemplos:
Javascript:
jQuery:
Nuevamente, en total divulgación, creé este servicio porque no pude encontrar una respuesta adecuada.
fuente
Puedes encontrar qué poner dentro de la función de JavaScript en esta publicación.
Proporcione su propio script PHP (o cualquier idioma) para enviar el correo electrónico.
fuente
Te estoy dando la noticia. NO PUEDE enviar un correo electrónico con JavaScript per se.Basado en el contexto de la pregunta del OP, mi respuesta anterior ya no es verdadera como lo señaló @KennyEvitt en los comentarios. Parece que puedes usar JavaScript como cliente SMTP .
Sin embargo , no he profundizado más para descubrir si es lo suficientemente seguro y compatible con todos los navegadores. Por lo tanto, no puedo alentarlo ni desalentarlo para que lo use. Úselo bajo su propio riesgo.
fuente
Sé que estoy muy tarde para escribir una respuesta a esta pregunta, pero creo que esto será útil para cualquiera que esté pensando en enviar correos electrónicos a través de JavaScript.
La primera forma en que sugeriría es usar una devolución de llamada para hacer esto en el servidor. Si realmente desea que se maneje con JavaScript, lo que recomiendo es lo siguiente.
La forma más fácil que encontré fue usando smtpJs. Una biblioteca gratuita que se puede usar para enviar correos electrónicos.
1.Incluye el script como se muestra a continuación
2. Puedes enviar un correo electrónico como este
Lo cual no es aconsejable, ya que mostrará su contraseña en el lado del cliente. De este modo, puede hacer lo siguiente para cifrar sus credenciales SMTP, bloquearlas en un solo dominio y pasar un token seguro en lugar de las credenciales.
Finalmente, si no tiene un servidor SMTP, utiliza un servicio de retransmisión smtp como Elastic Email
También aquí está el enlace al sitio web oficial de SmtpJS.com donde puede encontrar todos los ejemplos que necesita y el lugar donde puede crear su token seguro.
Espero que alguien encuentre útiles estos detalles. Feliz codificación
fuente
Parece que hay una nueva solución en el horizonte. Se llama EmailJS . Afirman que no se necesita ningún código de servidor. Puedes solicitar una invitación.
Actualización de agosto de 2016: EmailJS parece estar en vivo ya. Puede enviar hasta 200 correos electrónicos por mes de forma gratuita y ofrece suscripciones para volúmenes más altos.
fuente
window.open ('mailto: [email protected]'); como arriba no hace nada para ocultar que la dirección de correo electrónico "[email protected]" sea recolectada por los robots de spam. Solía encontrarme constantemente con este problema.
fuente
Javascript es del lado del cliente, no puede enviar correos electrónicos con Javascript. El navegador solo reconoce
mailto:
e inicia su cliente de correo predeterminado.fuente
En su
sendMail()
función, agregue una llamada ajax a su backend, donde puede implementar esto en el lado del servidor.fuente
fuente
JavaScript no puede enviar correos electrónicos desde un navegador web. Sin embargo, al alejarse de la solución que ya intentó implementar, puede hacer algo que cumpla con el requisito original:
Puede usar JavaScript para construir los valores que necesitará el correo electrónico y luego realizar una solicitud AJAX a un recurso del servidor que realmente envía el correo electrónico. (No sé qué idiomas / tecnologías del lado del servidor está utilizando, por lo que esa parte depende de usted).
Si no está familiarizado con AJAX, una búsqueda rápida en Google le dará mucha información. En general, puede ponerlo en funcionamiento rápidamente con la función $ .ajax () de jQuery. Solo necesita tener una página en el servidor a la que se pueda llamar en la solicitud.
fuente
Parece que una 'respuesta' a esto es implementar un cliente SMPT. Consulte email.js para obtener una biblioteca de JavaScript con un cliente SMTP.
Aquí está el repositorio de GitHub para el cliente SMTP. Basado en el README del repositorio, parece que se pueden requerir varias cuñas o polyfills dependiendo del navegador del cliente, pero en general parece factible (si no se logra de manera significativa), aunque no de una manera que pueda describirse fácilmente incluso de manera razonable. larga respuesta aquí.
fuente
Hay un servicio combinado. Puede combinar las soluciones mencionadas anteriormente como mandril con un servicio EmailJS, que puede hacer que el sistema sea más seguro. Sin embargo, aún no han comenzado el servicio.
fuente
Otra forma de enviar correos electrónicos desde JavaScript es usar directtomx.com de la siguiente manera;
Luego llámelo desde su página de la siguiente manera;
fuente
Lo haría con la biblioteca SMTPJs . Ofrece cifrado a sus credenciales, como nombre de usuario, contraseña, etc.
fuente
No hay una respuesta directa a su pregunta, ya que no podemos enviar correos electrónicos solo usando javascript, pero hay formas de usar javascript para enviarnos correos electrónicos:
1) usando una API y llame a la API a través de JavaScript para enviarnos el correo electrónico, por ejemplo https://www.emailjs.com dice que puede usar el código que se encuentra a continuación para llamar a su API después de alguna configuración:
2) cree un código de back-end para enviarle un correo electrónico, puede usar cualquier marco de back-end para hacerlo por usted.
3) usando algo como:
que abrirá su aplicación de correo electrónico, esto podría entrar en una ventana emergente bloqueada en su navegador.
En general, enviar un correo electrónico es una tarea del servidor, por lo que debe hacerse en idiomas de back-end, pero podemos usar JavaScript para recopilar los datos que se necesitan y enviarlos al servidor o la API, también podemos usar la aplicación de terceros y abrirlos. a través del navegador usando JavaScript como se mencionó anteriormente.
fuente
La respuesta corta es que no puedes hacerlo usando JavaScript solo. Necesitaría un controlador del lado del servidor para conectarse con el servidor SMTP para enviar el correo. Hay muchos scripts de correo simples en línea, como este para PHP:
Use Ajax para enviar una solicitud al script PHP, verifique que el campo requerido no esté vacío o sea incorrecto usando js también mantenga un registro de correo enviado por quién desde su servidor.
Compruebe si hay algún error detectado durante el envío de su secuencia de comandos y tome las medidas adecuadas.
Para resolverlo, por ejemplo, si la dirección de correo es incorrecta o si el correo no se envía debido a un problema del servidor o está en la cola en tales condiciones, informe al usuario de inmediato y evite el envío múltiple del mismo correo electrónico una y otra vez. Obtenga respuesta de su script usando jQuery GET y POST
fuente
Como todos estos son información maravillosa, hay una pequeña API llamada Mandrill para enviar correos electrónicos desde JavaScript y funciona perfectamente. Puedes darle una oportunidad. Aquí hay un pequeño tutorial para comenzar.
fuente
Enviar un correo electrónico utilizando JavaScript o jQuery
fuente
var objO = new ActiveXObject('Outlook.Application');