mailto vincular várias linhas do corpo

120

tendo problemas para fazer com que várias linhas funcionem corretamente em um link mailto

No meu caso, estou testando-o com um leitor de email padrão do Outlook.

O seguinte é colocado em uma âncora href:

mailto:[email protected]?&subject=test&body=type%20your&body=message%20here

somente "mensagem aqui" é exibida no corpo do email. (se eu uso chrome ou IE)

pensamentos?

KevinDeus
fonte

Respostas:

208

Você pode usar a codificação de URL para codificar a nova linha como %0A.

mailto:[email protected]?subject=test&body=type%20your%0Amessage%20here

Embora o acima pareça funcionar em muitos casos, o usuário olibre ressalta que o RFC que governa o esquema mailto URI especifica que %0D%0A(retorno de carro + avanço de linha) deve ser usado em vez de %0A(avanço de linha). Consulte também: Representações de nova linha .

cyang
fonte
4
Obrigado, isso funcionou bem para mim e parece muito mais simples do que outras soluções flutuando na Internet.
Bryn
Isso deve funcionar para todos os caracteres especiais, certo? & =% 26,% =% 25, ​​existem caracteres em que esse padrão não se aplica?
Blast_hardcheese #
2
Para sua informação, $0Aé simplesmenteescape( "\n" )
divillysausages
2
Esse codificador usa o padrão encodeURIComponentpara codificar os componentes do URI.
Cees Timmerman
1
% 0D% 0A trabalhou para mim por e-mail e compartilhar mensagem whatsapp
BenB
40
  1. Use um único bodyparâmetro dentro da mailtostring
  2. Usar %0D%0Acomo nova linha

O mailtoesquema de URI é especificado por RFC2368 (julho de 1998) e RFC6068 (outubro de 2010).
Abaixo está um extrato da seção 5 deste último RFC:

[...] quebras de linha no corpo de uma mensagem DEVEM ser codificadas "%0D%0A".
As implementações PODEM adicionar uma quebra de linha final ao corpo de uma mensagem, mesmo se não houver rastro "%0D%0A"no corpo [...]

Veja também na seção 6 o exemplo da mesma RFC:

<mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index>

O mailtocorpo acima corresponde a:

send current-issue
send index
olibre
fonte
18

Para obter linhas corporais, use escape ()

body_line =  escape("\n");

tão

href = "mailto:[email protected]?body=hello,"+body_line+"I like this.";
lokeshjain2008
fonte
1
Eu prefiro isso pessoalmente. Principalmente porque isso também funciona quando você tentar adicionar um%
Dan James Palmer
5
encodeURIComponent, em vez. Veja aqui.
Cees Timmerman
15

É isso que eu faço, basta adicionar \ne usarencodeURIComponent

Exemplo

var emailBody = "1st line.\n 2nd line \n 3rd line";

emailBody = encodeURIComponent(emailBody);

href = "mailto:[email protected]?body=" + emailBody;

Verifique os documentos encodeURIComponent

kiranvj
fonte
Para includeque você usa encodeURIComponent?
precisa saber é o seguinte
1
@ frakman1 encodeURIComponent é uma função JavaScript. Você pode usá-lo sem incluir.
precisa saber é