Quero que meu site tenha a capacidade de enviar um email sem atualizar a página. Então, eu quero 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" />
Aqui está como eu quero chamar a função, mas não sei o que colocar na função javascript. A partir da pesquisa que fiz, encontrei um exemplo que usa o método mailto, mas meu entendimento é que, na verdade, ele não é enviado diretamente do site.
Portanto, minha pergunta é onde posso encontrar o que colocar na função JavaScript para enviar um email diretamente do site.
function sendMail() {
/* ...code here... */
}
javascript
email
user906357
fonte
fonte
Respostas:
Você não pode enviar um email diretamente com javascript.
No entanto, você pode abrir o cliente de email do usuário:
Existem também alguns parâmetros para preencher previamente o assunto e o corpo:
Outra solução seria fazer uma chamada ajax para o servidor, para que o servidor envie o email. Tenha cuidado para não permitir que ninguém envie nenhum email através do seu servidor.
fonte
window.location.href
(como nesta resposta: stackoverflow.com/questions/271171/… ) para abrir o cliente de email e ele não deixa essa janela vazia para trás quando o usuário termina o email.subject
ebody
variáveis ou são o texto real que estará nos campos?window.open( String( 'mailto:recipient^example.com' ).replace('^', '@') );
a spam bots ConfuseIndireto via servidor - chamando a API de terceiros - seguro e recomendado
Seu servidor pode chamar a API de terceiros após autenticação e autorização adequadas. As chaves da API não são expostas ao cliente.
node.js - https://www.npmjs.org/package/node-mandrill
e use use $ .ajax no cliente para chamar sua API de email.
Diretamente do cliente - Chamando API de terceiros - não recomendado
Envie um email usando apenas JavaScript
Como isso -
https://medium.com/design-startups/b53319616782
Nota: lembre-se de que sua chave de API é visível para qualquer pessoa, portanto, qualquer usuário mal-intencionado pode usá-la para enviar e-mails que podem consumir sua cota.
fonte
Não consegui encontrar uma resposta que realmente satisfizesse a pergunta original.
Eu montei um serviço gratuito simples que permite que você faça uma solicitação HTTP POST padrão para enviar um email. Chama-se PostMail , e você pode simplesmente postar um formulário, usar Javascript ou jQuery. Quando você se inscreve, ele fornece um código que você pode copiar e colar em seu site. aqui estão alguns exemplos:
Javascript:
jQuery:
Novamente, na divulgação completa, criei este serviço porque não consegui encontrar uma resposta adequada.
fonte
Você pode encontrar o que colocar dentro da função JavaScript nesta postagem.
Forneça seu próprio script PHP (ou qualquer outro idioma) para enviar o email.
fonte
Estou lhe dando a notícia. Você NÃO PODE enviar um email com JavaScript propriamente dito.Com base no contexto da pergunta do OP, minha resposta acima não é mais verdadeira, como apontado por @KennyEvitt nos comentários. Parece que você pode usar o JavaScript como um cliente SMTP .
No entanto , não me aprofundou mais para descobrir se é seguro e compatível com vários navegadores. Portanto, não posso encorajar nem desencorajar você a usá-lo. Use por sua conta e risco.
fonte
Sei que estou muito atrasado para escrever uma resposta para esta pergunta, mas, no entanto, acho que isso será útil para qualquer pessoa que esteja pensando em enviar e-mails via javascript.
A primeira maneira que eu sugeriria é usar um retorno de chamada para fazer isso no servidor. Se você realmente deseja que ele seja manipulado usando o seguinte javascript, é o que eu recomendo.
A maneira mais fácil que encontrei foi usar smtpJs. Uma biblioteca gratuita que pode ser usada para enviar emails.
1.Include o script como abaixo
2. Você pode enviar um email como este
Isso não é aconselhável, pois ele exibirá sua senha no lado do cliente. Assim, você pode criptografar suas credenciais SMTP, bloqueá-las em um único domínio e passar um token seguro em vez das credenciais.
Finalmente, se você não tiver um servidor SMTP, use um serviço de retransmissão smtp, como Elastic Email
Também aqui está o link para o site oficial do SmtpJS.com, onde você pode encontrar todo o exemplo necessário e o local onde pode criar seu token seguro.
Espero que alguém ache esses detalhes úteis. Feliz codificação.
fonte
Parece haver uma nova solução no horizonte. Chama-se EmailJS . Eles afirmam que nenhum código de servidor é necessário. Você pode solicitar um convite.
Atualização em agosto de 2016: o EmailJS parece já estar ativo. Você pode enviar até 200 e-mails por mês gratuitamente e oferece assinaturas para volumes maiores.
fonte
window.open ('mailto: [email protected]'); como acima, nada impede que o endereço de email "[email protected]" seja coletado por spambots. Eu costumava me deparar com esse problema constantemente.
fonte
Javascript é do lado do cliente, você não pode enviar e-mail com Javascript. O navegador reconhece apenas talvez
mailto:
e inicia o seu cliente de email padrão.fonte
Em sua
sendMail()
função, adicione uma chamada ajax ao seu back-end, onde você pode implementar isso no lado do servidor.fonte
fonte
JavaScript não pode enviar email de um navegador da web. No entanto, afastando-se da solução que você já tentou implementar, você pode fazer algo que atenda ao requisito original:
Você pode usar o JavaScript para construir os valores que o email precisará e, em seguida, fazer uma solicitação AJAX para um recurso do servidor que realmente envia o email. (Não sei quais idiomas / tecnologias do servidor você está usando, portanto essa parte depende de você.)
Se você não conhece o AJAX, uma rápida pesquisa no Google fornece muitas informações. Geralmente você pode colocá-lo em funcionamento rapidamente com a função $ .ajax () do jQuery. Você só precisa ter uma página no servidor que possa ser chamada na solicitação.
fonte
Parece que uma 'resposta' para isso é implementar um cliente SMPT. Consulte email.js para obter uma biblioteca JavaScript com um cliente SMTP.
Aqui está o repositório GitHub para o cliente SMTP. Com base no README do repo, parece que vários shims ou polyfills podem ser necessários, dependendo do navegador do cliente, mas no geral isso parece viável (se não realmente realizado de maneira significativa), mas não de uma maneira que possa ser facilmente descrita, mesmo que razoavelmente- resposta longa aqui.
fonte
Existe um serviço combinado. Você pode combinar as soluções listadas acima, como mandrill, com um serviço EmailJS, que pode tornar o sistema mais seguro. Eles ainda não começaram o serviço.
fonte
Outra maneira de enviar email do JavaScript é usar o directtomx.com da seguinte maneira;
Em seguida, chame-o da sua página da seguinte maneira;
fonte
Eu faria isso com a biblioteca SMTPJs . Ele oferece criptografia para suas credenciais, como nome de usuário, senha etc.
fonte
Não há uma resposta direta à sua pergunta, pois não podemos enviar e-mail apenas usando javascript, mas existem maneiras de usar o javascript para enviar e-mails para nós:
1) usar uma API para e chamar a API via javascript para enviar o e-mail para nós, por exemplo, https://www.emailjs.com diz que você pode usar esse código abaixo para chamar a API após alguma configuração:
2) crie um código de back-end para enviar um email para você; você pode usar qualquer estrutura de back-end para fazer isso por você.
3) usando algo como:
que abrirá seu aplicativo de e-mail, isso poderá entrar no pop-up bloqueado no seu navegador.
Em geral, enviar um email é uma tarefa do servidor, portanto, isso deve ser feito em idiomas de back-end, mas podemos usar o javascript para coletar os dados necessários e enviá-los ao servidor ou API, também podemos usar o aplicativo de terceiros e abri-los através do navegador usando javascript, como mencionado acima.
fonte
A resposta curta é que você não pode fazê-lo usando JavaScript sozinho. Você precisaria de um manipulador do lado do servidor para se conectar ao servidor SMTP para realmente enviar o email. Existem muitos scripts de correio simples online, como este para PHP:
Use o Ajax para enviar solicitação para o script PHP, verifique se o campo obrigatório não está vazio ou incorreto usando js também mantenha um registro do envio de mensagens por quem do seu servidor.
Verifique se há algum erro detectado ao enviar a partir do seu script e tome as medidas apropriadas.
Para resolvê-lo, por exemplo, se o endereço de email estiver incorreto ou o email não for enviado devido a um problema no servidor ou estiver na fila, em tal condição, informe-o imediatamente ao usuário e evite o envio múltiplo do mesmo email repetidamente. Obtenha resposta do seu script usando jQuery GET e POST
fonte
Como essas informações são maravilhosas, existe uma pequena API chamada Mandrill para enviar e-mails a partir de javascript e funciona perfeitamente. Você pode tentar. Aqui está um pequeno tutorial para o começo.
fonte
Envie um email usando o JavaScript ou jQuery
fonte
var objO = new ActiveXObject('Outlook.Application');