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@address.com?&subject=test&body=type%20your&body=message%20here

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

pensamentos?

Respostas:


208

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

mailto:email@address.com?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 .


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

18

Para obter linhas corporais, use escape ()

body_line =  escape("\n");

tão

href = "mailto:me@my.com?body=hello,"+body_line+"I like this.";

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:me@somesite.com?body=" + emailBody;

Verifique os documentos encodeURIComponent


Para includeque você usa encodeURIComponent?
precisa saber é o seguinte

1
@ frakman1 encodeURIComponent é uma função JavaScript. Você pode usá-lo sem incluir.
precisa saber é
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.