mandar - Envío de correos electrónicos con Javascript
mandar un correo con js (8)
Esto es un poco confuso de explicar, así que tengan paciencia conmigo aquí ...
Quiero configurar un sistema en el que un usuario pueda enviar correos electrónicos con plantillas a través de mi sitio web, excepto que en realidad no se envía utilizando mi servidor, sino que abre su propio cliente de correo local con un correo electrónico listo para usar. La aplicación llenaría el cuerpo del correo electrónico con variables predefinidas, para evitar que el usuario tenga que escribirlo. Luego pueden editar el mensaje como lo deseen, en caso de que no se ajuste exactamente a sus propósitos.
Hay una serie de razones por las que quiero que lleguen a través del cliente de correo local del usuario, por lo que no es una opción que el servidor envíe el correo electrónico: tiene que ser 100% del lado del cliente.
Ya tengo funcionando una solución que funciona en su mayoría, y voy a publicar los detalles de eso como una respuesta, me pregunto si hay alguna manera mejor.
¿Qué pasa con tener una validación en vivo en el cuadro de texto, y una vez que supera el 2000 (o el umbral máximo) entonces mostrar ''Este correo electrónico es demasiado largo para completarse en el navegador, por favor <span class="launchEmailClientLink">launch what you have in your email client</span>
''
A lo que tendría
.launchEmailClientLink {
cursor: pointer;
color: #00F;
}
y jQuery esto en su onDomReady
$(''.launchEmailClientLink'').bind(''click'',sendMail);
El problema con la idea es que el usuario debe tener un cliente de correo electrónico, que no es el caso si confía en los webmail, que es el caso para muchos usuarios. (al menos no hubo ningún cambio para redirigir a este correo web cuando investigué el problema hace una docena de años).
Es por eso que la solución normal es confiar en php mail () para enviar correos electrónicos (del lado del servidor, entonces).
Pero si hoy en día el "cliente de correo electrónico" siempre está configurado, automáticamente, potencialmente para un cliente de correo web, estaré encantado de saberlo.
Enviar solicitud a mandrillapp.com :
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
console.log(xhttp.responseText);
}
}
xhttp.open(''GET'', ''https://mandrillapp.com/api/1.0/messages/send.json?message[from_email][email protected]&message[to][0][email][email protected]&message[subject]=Заявка%20с%207995.by&message[html]=xxxxxx&key=oxddROOvCpKCp6InvVDqiGw'', true);
xhttp.send();
Esta es la manera de hacerlo usando jQuery y un "elemento" para hacer clic en:
$(''#element'').click(function(){
$(location).attr(''href'', ''mailto:?subject=''
+ encodeURIComponent("This is my subject")
+ "&body="
+ encodeURIComponent("This is my body")
);
});
Luego, puede obtener sus contenidos alimentándolos desde los campos de entrada (es decir, usando $(''#input1'').val()
o mediante un script del lado del servidor con $.get(''...'')
. Diviértase
La forma en que lo estoy haciendo ahora es básicamente así:
El HTML:
<textarea id="myText">
Lorem ipsum...
</textarea>
<button onclick="sendMail(); return false">Send</button>
El Javascript:
function sendMail() {
var link = "mailto:[email protected]"
+ "[email protected]"
+ "&subject=" + escape("This is my subject")
+ "&body=" + escape(document.getElementById(''myText'').value)
;
window.location.href = link;
}
Esto, sorprendentemente, funciona bastante bien. El único problema es que si el cuerpo es particularmente largo (más de 2000 caracteres), entonces abre un nuevo correo electrónico pero no hay información en él. Sospecho que sería con la longitud máxima de la URL excedida.
No necesita ningún javascript, solo necesita que su href se codifique así:
<a href="mailto:[email protected]">email me here!</a>
Puede usar este servicio gratuito: https://www.smtpjs.com
- Incluye el script:
<script src="https://smtpjs.com/v2/smtp.js"> </script>
Envía un correo electrónico usando:
Email.send("[email protected]", "[email protected]", "This is a subject", "this is the body", "smtp.yourisp.com", "username", "password");
Si esto solo va a abrir el cliente del usuario para enviar el correo electrónico, ¿por qué no dejar que ellos también lo compongan allí? Usted pierde la capacidad de rastrear lo que está enviando, pero si eso no es importante, simplemente recopile las direcciones y el asunto, y haga aparecer al cliente para que el usuario complete el cuerpo.