Esto es un poco confuso de explicar, así que tengan paciencia conmigo ...
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 a través de 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 él mismo. Luego, pueden editar el mensaje como lo deseen, en caso de que no se adapte exactamente a sus propósitos.
Hay varias razones por las que quiero que vaya a través del cliente de correo local del usuario, por lo que hacer que el servidor envíe el correo electrónico no es una opción: tiene que ser 100% del lado del cliente.
Ya tengo una solución que funciona en su mayor parte y publicaré los detalles de eso como respuesta, me pregunto si hay alguna manera mejor.
fuente
Respuestas:
La forma en que lo estoy haciendo ahora es básicamente así:
El HTML:
El Javascript:
Esto, sorprendentemente, funciona bastante bien. El único problema es que si el cuerpo es particularmente largo (en algún lugar de más de 2000 caracteres), simplemente abre un nuevo correo electrónico, pero no contiene información. Sospecho que tendría que ver con que se exceda la longitud máxima de la URL.
fuente
Esta es la forma de hacerlo usando jQuery y un "elemento" para hacer clic:
Luego, puede obtener su contenido alimentándolo desde los campos de entrada (es decir, usando
$('#input1').val()
o mediante un script del lado del servidor con$.get('...')
. Diviértasefuente
No necesita ningún javascript, solo necesita que su href esté codificado de esta manera:
fuente
href
valor cuando se eligen las direcciones. Si se necesita una publicación para obtener las direcciones de correo electrónico en el momento en que ocurre el clic, esto probablemente no funcionaría.¿Qué hay de tener una validación en vivo en el cuadro de texto, y una vez que supere los 2000 (o cualquiera que sea el umbral máximo), muestre 'Este correo electrónico es demasiado largo para completarlo en el navegador, por favor
<span class="launchEmailClientLink">launch what you have in your email client</span>
'A lo que tendría
y jQuery esto en su onDomReady
fuente
Puede utilizar este servicio gratuito: https://www.smtpjs.com
<script src="https://smtpjs.com/v2/smtp.js"></script>
fuente
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 redacten allí? Pierde la capacidad de rastrear lo que están enviando, pero si eso no es importante, simplemente recopile las direcciones y el asunto y muestre el cliente para permitir que el usuario complete el cuerpo.
fuente
El problema con la idea misma es que el usuario tiene que tener un cliente de correo electrónico, lo que no es el caso si se basa en los correos web, que es el caso de muchos usuarios. (al menos no hubo vuelta atrás 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é feliz de saberlo.
fuente
Enviar solicitud a mandrillapp.com :
fuente