mailto เชื่อมโยงเนื้อหาหลายบรรทัด


120

มีปัญหาในการทำให้หลายบรรทัดทำงานได้อย่างถูกต้องในลิงก์ mailto

ในกรณีของฉันฉันกำลังทดสอบกับโปรแกรมอ่านอีเมลเริ่มต้นของ Outlook

สิ่งต่อไปนี้ใส่ไว้ในจุดยึด href:

mailto:email@address.com?&subject=test&body=type%20your&body=message%20here

มีเพียง "ข้อความที่นี่" เท่านั้นที่ปรากฏในเนื้อหาอีเมล (ไม่ว่าฉันจะใช้ chrome หรือ IE)

ความคิด?

คำตอบ:


208

คุณสามารถใช้URL ที่เข้ารหัส%0Aการเข้ารหัสการขึ้นบรรทัดใหม่เป็น

mailto:email@address.com?subject=test&body=type%20your%0Amessage%20here

แม้ว่าข้างต้นจะใช้งานได้ในหลาย ๆ กรณีผู้ใช้ olibre ชี้ให้เห็นว่า RFC ที่ควบคุมโครงร่าง mailto URI ระบุว่า%0D%0Aควรใช้ (carriage return + line feed) แทน%0A(line feed) ดูเพิ่มเติม: การเป็นตัวแทนขึ้นบรรทัดใหม่


4
ขอบคุณสิ่งนี้ใช้ได้ดีสำหรับฉันและดูเหมือนง่ายกว่าโซลูชันอื่น ๆ ที่ลอยอยู่บนอินเทอร์เน็ต
bryn

สิ่งนี้ควรใช้ได้กับอักขระพิเศษทั้งหมดใช่ไหม & =% 26,% =% 25 มีอักขระใดบ้างที่รูปแบบนี้ไม่ถือ
blast_hardcheese

2
สำหรับข้อมูล$0Aก็คือescape( "\n" )
divillysausages

2
ตัวเข้ารหัสนั้นใช้มาตรฐานencodeURIComponentในการเข้ารหัสคอมโพเนนต์ URI
Cees Timmerman

1
% 0D% 0A ทำงานให้ฉันสำหรับอีเมลและแบ่งปันในข้อความ whatsapp
BenB

40
  1. ใช้bodyพารามิเตอร์เดียวภายในmailtoสตริง
  2. ใช้%0D%0Aเป็นขึ้นบรรทัดใหม่

mailtoโครงการ URIระบุโดยโดยRFC2368 (กรกฎาคม 1998) และRFC6068 (ตุลาคม 2010)
ด้านล่างนี้เป็นสารสกัดจากส่วนที่ 5ของ RFC ล่าสุดนี้:

[ ... ] "%0D%0A"แบ่งบรรทัดในร่างกายของข้อความจะต้องเข้ารหัสด้วย
การนำไปใช้งานอาจเพิ่มการแบ่งบรรทัดสุดท้ายให้กับเนื้อหาของข้อความแม้ว่าจะไม่มีการต่อท้าย"%0D%0A"ในเนื้อหา [... ]

ดูในส่วนที่ 6ตัวอย่างจาก RFC เดียวกัน:

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

mailtoเนื้อหาข้างต้นสอดคล้องกับ:

send current-issue
send index

18

ในการรับเส้นร่างกายให้ใช้การหลบหนี ()

body_line =  escape("\n");

ดังนั้น

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

1
ฉันชอบสิ่งนี้เป็นการส่วนตัว ส่วนใหญ่เป็นเพราะสิ่งนี้ได้ผลเช่นกันเมื่อคุณลองเพิ่ม%
Dan James Palmer

5
encodeURIComponentค่อนข้าง. ดูที่นี่.
Cees Timmerman

15

นี่คือสิ่งที่ฉันทำเพียงแค่เพิ่ม\nและใช้encodeURIComponent

ตัวอย่าง

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

emailBody = encodeURIComponent(emailBody);

href = "mailto:me@somesite.com?body=" + emailBody;

ตรวจสอบการเข้ารหัส UICเอกสารส่วนประกอบ


includeคุณใช้ทำอะไรencodeURIComponent?
frakman1

1
@ frakman1 encodeURIComponent เป็นฟังก์ชัน JavaScript คุณสามารถใช้งานได้โดยไม่ต้องมี
kiranvj
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.