mailto liên kết nhiều dòng nội dung


120

gặp sự cố để nhiều dòng hoạt động chính xác trong một liên kết mailto

Trong trường hợp của tôi, tôi đang thử nghiệm nó với trình đọc thư mặc định của Outlook.

Phần sau được đặt trong một anchor href:

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

chỉ "thông báo ở đây" hiển thị trong nội dung email. (cho dù tôi sử dụng chrome hay IE)

suy nghĩ?

Câu trả lời:


208

Bạn có thể sử dụng mã hóa URL để mã hóa dòng mới dưới dạng %0A.

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

Mặc dù những điều trên dường như hoạt động trong nhiều trường hợp, nhưng người dùng olibre chỉ ra rằng RFC quản lý lược đồ URI mailto chỉ định rằng %0D%0A(ký tự xuống dòng + nguồn cấp dữ liệu dòng) nên được sử dụng thay vì %0A(nguồn cấp dòng). Xem thêm: Biểu diễn dòng mới .


4
Cảm ơn, điều này đã hoạt động tốt đối với tôi và có vẻ đơn giản hơn nhiều so với các giải pháp khác trôi nổi trên internet.
bryn

Điều này sẽ hoạt động cho tất cả các ký tự đặc biệt, phải không? & =% 26,% =% 25, ​​có ký tự nào không chứa mẫu này không?
blast_hardcheese

2
để biết, $0Achỉ đơn giản làescape( "\n" )
divillysausages

2
Bộ mã hóa đó sử dụng tiêu chuẩn encodeURIComponentđể mã hóa các thành phần URI.
Cees Timmerman,

1
% 0D% 0A Đã làm việc cho tôi để gửi email và chia sẻ trong tin nhắn whatsapp
BenB

40
  1. Sử dụng một bodytham số duy nhất trong mailtochuỗi
  2. Sử dụng %0D%0Anhư dòng mới

Các mailtoĐề án URI được xác định bởi bởi RFC2368 (July 1998) và RFC6068 (tháng 10 năm 2010).
Dưới đây là phần trích dẫn của phần 5 của RFC cuối cùng này:

Các dấu ngắt dòng [...] trong nội dung thư PHẢI được mã hóa bằng "%0D%0A".
Việc triển khai CÓ THỂ thêm dấu ngắt dòng cuối cùng vào phần nội dung thư ngay cả khi không có dấu gạch ngang "%0D%0A"trong phần nội dung [...]

Xem thêm trong phần 6 ví dụ từ cùng một RFC:

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

Phần trên mailtotương ứng với:

send current-issue
send index

18

Để lấy dòng nội dung, hãy sử dụng Escape ()

body_line =  escape("\n");

vì thế

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

1
Tôi thích điều này cá nhân. Chủ yếu là bởi vì đây cũng làm việc khi bạn cố gắng và thêm một%
Dan James Palmer

5
encodeURIComponent, hơn. Xem tại đây.
Cees Timmerman

15

Đây là những gì tôi làm, chỉ cần thêm \nvà sử dụngencodeURIComponent

Thí dụ

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

emailBody = encodeURIComponent(emailBody);

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

Kiểm tra encodeURIComponent docs


Bạn includedùng để làm encodeURIComponentgì?
frakman1

1
@ frakman1 encodeURIComponent là một hàm JavaScript. Bạn có thể sử dụng nó mà không có bất kỳ bao gồm.
kiranvj
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.