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

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

Gedanken?

Antworten:


208

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

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


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

18

Um Körperlinien zu erhalten, benutze Escape ()

body_line =  escape("\n");

so

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

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

Überprüfen Sie die Dokumente von encodeURIComponent


Wofür benutzt includedu encodeURIComponent?
frakman1

1
@ frakman1 encodeURIComponent ist eine JavaScript-Funktion. Sie können es ohne Includes verwenden.
Kiranvj
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.