mailto verknüpfen mehrere Körperlinien

120

Probleme beim korrekten Funktionieren mehrerer Zeilen in einem Mailto-Link

In meinem Fall teste ich es mit einem Outlook-Standard-E-Mail-Reader.

Folgendes wird in einen Anker href gesetzt:

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

Im E-Mail-Text wird nur "Nachricht hier" angezeigt. (ob ich Chrome oder IE benutze)

Gedanken?

KevinDeus
quelle

Antworten:

208

Sie können die URL-Codierung verwenden , um die neue Zeile als zu codieren %0A.

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

Während das Obige in vielen Fällen zu funktionieren scheint, weist user olibre darauf hin, dass der RFC, der das Mailto-URI-Schema regelt, angibt, dass %0D%0A(Wagenrücklauf + Zeilenvorschub) anstelle von %0A(Zeilenvorschub) verwendet werden soll. Siehe auch: Newline-Darstellungen .

Cyang
quelle
4
Vielen Dank, das hat bei mir gut funktioniert und scheint viel einfacher zu sein als andere Lösungen, die im Internet herumschwirren.
Bryn
Das sollte für alle Sonderzeichen funktionieren, oder? & =% 26,% =% 25, ​​gibt es Zeichen, bei denen dieses Muster nicht gilt?
blast_hardcheese
2
für info, $0Aist einfachescape( "\n" )
divillysausages
2
Dieser Encoder verwendet den Standard encodeURIComponentzum Codieren der URI-Komponenten.
Cees Timmerman
1
% 0D% 0A Hat für mich für E-Mail gearbeitet und in WhatsApp-Nachricht geteilt
BenB
40
  1. Verwenden Sie einen einzelnen bodyParameter innerhalb der mailtoZeichenfolge
  2. Verwendung %0D%0Aals Newline

Das mailtoURI-Schema wird von RFC2368 (Juli 1998) und RFC6068 (Oktober 2010) spezifiziert .
Unten finden Sie einen Auszug aus Abschnitt 5 dieses letzten RFC:

[...] Zeilenumbrüche im Textkörper einer Nachricht MÜSSEN mit codiert werden "%0D%0A".
Implementierungen KÖNNEN dem Textkörper einer Nachricht einen letzten Zeilenumbruch hinzufügen, selbst wenn der Textkörper keine "%0D%0A"[...]

Siehe auch in Abschnitt 6 das Beispiel aus demselben RFC:

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

Der obige mailtoKörper entspricht:

send current-issue
send index
olibre
quelle
18

Um Körperlinien zu erhalten, benutze Escape ()

body_line =  escape("\n");

so

href = "mailto:[email protected]?body=hello,"+body_line+"I like this.";
lokeshjain2008
quelle
1
Ich persönlich bevorzuge das. Hauptsächlich, weil dies auch funktioniert, wenn Sie versuchen, ein% hinzuzufügen
Dan James Palmer
5
encodeURIComponent, lieber. Siehe hier.
Cees Timmerman
15

Dies ist, was ich tue, einfach hinzufügen \nund verwendenencodeURIComponent

Beispiel

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

emailBody = encodeURIComponent(emailBody);

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

Überprüfen Sie die Dokumente von encodeURIComponent

kiranvj
quelle
Wofür benutzt includedu encodeURIComponent?
frakman1
1
@ frakman1 encodeURIComponent ist eine JavaScript-Funktion. Sie können es ohne Includes verwenden.
Kiranvj