Chèn ngắt dòng trong cơ thể mailto


166

Tôi muốn chèn một ngắt dòng vào cơ thể mailto của tôi. Tôi đã thử% 0A,% 0D và% 0D% 0A. Không có gì làm việc cho tôi. Tôi đã thử nghiệm trên Gmail, Yahoo, Apple Mail, Outlook 2010, Outlook.com và Thunderbird với Google Chrome trên Mac OSX.

Có ai giúp đỡ không?

Đây là mã của tôi:

<a href="mailto:email@mycompany.com?subject=Subscribe&body=Lastame%20%3A%0D%0A%20Firstname%20%3A"><img alt="Subscribe" class="center" height="50" src="subscribe.png" style="width: 137px; height: 50px; color: #4da6f7; font-size: 20px; display: block;" width="137"></a>


@ John Làm thế nào là một bản sao? Đó là một câu hỏi rất cụ thể về việc %20được sử dụng để nhập dòng mới, chứ không phải làm thế nào để tạo một dòng mới như câu hỏi này.
jdmdevdotnet

1
Trông giống như một bản dupe với tôi. Câu hỏi đó hỏi "làm thế nào để tôi chèn một ngắt dòng như tôi làm một khoảng trắng". Nó không hỏi làm thế nào để sử dụng %20 như một dòng mới. Sự khác biệt đáng kể duy nhất tôi thấy là điều này là hỏi về cơ thể, trong khi câu hỏi đó hỏi về chủ đề này. Đó là cùng một câu trả lời trong cả hai trường hợp.
Amy

Câu trả lời:


242

Tôi sẽ đề nghị bạn thử thẻ html <br>, trong trường hợp ứng dụng tiếp thị của bạn sẽ nhận ra nó.

tôi sử dụng %0D%0A . Điều này sẽ hoạt động miễn là email được định dạng HTML.

<a href="mailto:email@mycompany.com?subject=Subscribe&body=Lastame%20%3A%0D%0AFirstname%20%3A"><img alt="Subscribe" class="center" height="50" src="subscribe.png" style="width: 137px; height: 50px; color: #4da6f7; font-size: 20px; display: block;" width="137"></a>

Bạn có thể muốn lấy ra% 20 trước Firstname, nếu không, bạn sẽ có một khoảng trắng là ký tự đầu tiên trên dòng tiếp theo.

Một lưu ý, khi tôi kiểm tra điều này với mã của bạn, nó đã hoạt động (cùng với một số khoảng cách bổ sung). Bạn có đang sử dụng ứng dụng thư khách không cho phép định dạng HTML không?


1
Tôi đã thử %0D%0A, và nó không hoạt động đối với tôi. Tôi sử dụng một giải pháp tiếp thị qua email để gửi bản tin của mình. Tôi cho rằng nó đang viết lại mã của tôi
Marion

1
Ồ, nếu bạn đang sử dụng giải pháp riêng biệt, bạn đã thử thẻ HTML "<br>" chưa? Điều đó đôi khi hoạt động khi tôi đang sử dụng các ứng dụng của bên thứ 3.
Jem

2
Tôi đã thực hiện một số thử nghiệm với một nền tảng khác, mã của tôi đang hoạt động hoàn hảo! nó chắc chắn đến từ giải pháp tôi sử dụng. Tất cả những giờ đó đã mất vì không có gì ... xin lỗi các bạn, và một lần nữa cảm ơn sự giúp đỡ của bạn
Marion

4
nếu bạn muốn chuyển đổi tất cả <br>, <br/>hoặc <br />để %0D%0Abạn có thể làmvar emailBody = htmlBody.replace(/<br\s*\/?>/mg,"%0D%0A");
João Ferreira Pimentel

117

Theo RFC2368 được định nghĩa mailto:, được củng cố thêm bằng một ví dụ trong RFC1738 , có tuyên bố rõ ràng rằng cách duy nhất hợp lệ để tạo ngắt dòng là với %0D%0A.

Điều này cũng áp dụng cho tất cả các lược đồ url như gopher, smtp, sdp, imap, ldap, v.v.


7
Lưu ý rằng nếu bạn xây dựng một liên kết mailto bằng JavaScript, thì bạn có thể sử dụng escape('\r\n')để lấy %0D%0A.
Mark Rhodes

6
Lưu ý bổ sung: Nếu bạn đang xây dựng liên kết với các mẫu chuỗi ES6 / ES2015, mã thô ( %0D%0A) hoạt động tốt.
Adam Simpson

@MarkRhodes: Vì mailto là một URI, bạn cũng có thể sử dụng encodeURI (myMailToURIString), sau đó sẽ thoát tất cả các ký tự cần thiết trong cơ thể thư của bạn :-)
Lars Juel Jensen

4

Tò mò trong gmail cho Android %0D%0Akhông hoạt động và <br>hoạt động:

<a href="mailto:anything@any.com?subject=This%20is%20Subject&body=First line<br>Second line">
   click here to mail me
</a>

-1

Đối với email văn bản gốc bằng JavaScript, bạn cũng có thể sử dụng \rvới encodeURIComponent().

Ví dụ: tin nhắn này:

hello\rthis answer is now well formated\rand it contains good knowleadge\rthat is why I am up voting

Mã hóa URI, kết quả là:

hello%0Dthis%20answer%20is%20now%20well%20formated%0Dand%20it%20contains%20good%20knowleadge%0Dthat%20is%20why%20I%20am%20up%20voting

Và, bằng cách sử dụng href:

mailto:me@house.country?body=hello%0Dthis%20answer%20is%20now%20well%20formated%0Dand%20it%20contains%20good%20knowleadge%0Dthat%20is%20why%20I%20am%20up%20voting

Sẽ dẫn đến văn bản nội dung email sau:

hello
this answer is now well formated
and it contains good knowleadge
that is why I am up voting

1
@littlecoder Bởi vì đó là một câu trả lời kém: định dạng kém, từ ngữ kém và nó bỏ qua bối cảnh thiết yếu. Nó có khả năng gây nhầm lẫn cho những người hạ cánh trên trang này cũng như để giúp đỡ họ. Nó không hữu ích theo tiêu chuẩn của trang web này và do đó, nó đã được bình chọn phù hợp
UnrealEagle
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.