Posso usar JavaScript para criar um email do lado do cliente?
-
08-06-2019 - |
Pergunta
Quero criar uma página da web de criador de e-mail do lado do cliente.Eu conheço os problemas de usar a ação mailto em um formato HTML (não padrão, nenhuma aplicação de email padrão definida no cliente).Mas a página web não é muito importante e eles não se importam muito.
O email criado pela ação mailto tem a sintaxe:
assunto:assunto indefinido
corpo:parâmetro1=valor1
parâmetro2=valor2
.
.
.
parâmetro = valor
Posso usar JavaScript para formatar o e-mail assim?
Assunto:XXXXXX
Corpo:Valor1;Valor2;Valor3...ValorN
Solução
O que usamos em um projeto é uma janela pop-up que abre um mailto:link, é a única maneira que encontramos de compor um e-mail dentro do cliente de e-mail padrão que funciona com todos os clientes de e-mail (pelo menos todos os nossos clientes usaram).
var addresses = "";//between the speech mark goes the receptient. Seperate addresses with a ;
var body = ""//write the message text between the speech marks or put a variable in the place of the speech marks
var subject = ""//between the speech marks goes the subject of the message
var href = "mailto:" + addresses + "?"
+ "subject=" + subject + "&"
+ "body=" + body;
var wndMail;
wndMail = window.open(href, "_blank", "scrollbars=yes,resizable=yes,width=10,height=10");
if(wndMail)
{
wndMail.close();
}
Outras dicas
Você tem mais ou menos apenas duas alternativas ao enviar e-mails pelo navegador.
- crie uma página que receba a entrada do usuário e permita que eles enviem e-mails através do seu servidor web.Você precisa de algum tipo de script do lado do servidor para isso.
- use um mailto:link para acionar a abertura do cliente de e-mail registrado do usuário.Isso apresenta as armadilhas óbvias que você mencionou e é menos flexível.Porém, precisa de menos trabalho.
Somente com javascript, é não é possivel.
Javascript não se destina a fazer tais coisas e é severamente prejudicado na maneira como pode interagir com qualquer coisa que não seja o navegador em que reside (por um bom motivo!).
Pense nisso:um spammer escrevendo um site com javascript do lado do cliente que enviará automaticamente para milhares de endereços de e-mail aleatórios.Se as pessoas acessassem esse site, todas estariam participando de um golpe de mala direta distribuída em massa, com seus próprios computadores...nenhuma infecção ou interação do usuário é necessária!
Você pode criar um link mailto e dispará-lo usando javascript:
var mail = "mailto:buddy@mail.com?subject=New Mail&body=Mail text body";
var mlink = document.createElement('a');
mlink.setAttribute('href', mail);
mlink.click();
Existe uma razão pela qual você não pode simplesmente enviar os dados para uma página que trata do envio de e-mails?É muito fácil enviar um e-mail na maioria dos idiomas; portanto, a menos que haja um forte motivo para enviá-lo ao lado do cliente, eu recomendaria esse caminho.