Làm cách nào để định dạng một Chuỗi trong email để Outlook sẽ in các dấu ngắt dòng?


76

Tôi đang cố gửi một email bằng Java nhưng khi tôi đọc phần nội dung của email trong Outlook, nó đã loại bỏ tất cả các dấu ngắt dòng của tôi. Tôi đang đặt \ n ở cuối dòng nhưng có điều gì đặc biệt mà tôi cần làm ngoài việc đó không? Người nhận sẽ luôn sử dụng Outlook.

Tôi tìm thấy một trang trên microsoft.com cho biết có "tính năng" Xóa ngắt dòng "trong Outlook, vậy điều này có nghĩa là không có giải pháp nào để khắc phục điều đó ngoài việc bỏ kiểm tra cài đặt đó?

Cảm ơn

Câu trả lời:


29

Bạn cần sử dụng \r\nnhư một giải pháp.


25
Mặc dù điều này có thể giúp chỉ đơn giản là kết thúc một dòng trong \ r \ n nhưng không đảm bảo rằng Outlook giữ ngắt dòng.
GaussZ

5
nếu teh loại thông điệp là văn bản \ html, sử dụng <p />
lwpro2

Đối với text / html, tôi đã thử mọi thứ trên mạng <br>, <br />, / n, / r / n .... Vẫn không thể có dòng mới trong e-mail triển vọng của tôi
Noosphere

1
\ t \ n phù hợp với tôi trên Outlook2010. @Noosphere có vẻ như bạn đã gạch nhầm.
Man Coding

195

Tôi vừa phải chiến đấu với điều này ngày hôm nay. Hãy gọi hành vi loại bỏ các ngắt dòng thừa là "tiếp tục". Một thử nghiệm nhỏ phát hiện ra hành vi sau:

  • Mọi tin nhắn đều bắt đầu với sự tiếp tục tắt.
  • Các dòng dài dưới 40 ký tự không kích hoạt tiếp tục, nhưng nếu tiếp tục được bật, chúng sẽ bị xóa ngắt dòng.
  • Các dòng 40 ký tự trở lên sẽ bật tiếp tục. Nó vẫn bật cho đến khi một sự kiện xảy ra để tắt nó đi.
  • Các dòng kết thúc bằng dấu chấm, dấu chấm hỏi, dấu chấm than hoặc dấu hai chấm sẽ tắt tiếp tục. (Outlook cho rằng đó là phần cuối của một câu?)
  • Các dòng tắt tiếp tục sẽ bắt đầu bằng ngắt dòng, nhưng sẽ bật lại tiếp tục nếu chúng dài hơn 40 ký tự.
  • Các dòng bắt đầu hoặc kết thúc bằng tab sẽ tắt tiếp tục.
  • Các dòng bắt đầu bằng 2 dấu cách trở lên sẽ tắt tiếp tục.
  • Các dòng kết thúc bằng 3 dấu cách trở lên sẽ tắt tiếp tục.

Xin lưu ý rằng tôi đã thử tất cả những điều này với Outlook 2007. YMMV.
Vì vậy, nếu có thể, hãy kết thúc tất cả các mục đầu dòng bằng dấu chấm câu kết thúc câu, một tab hoặc thậm chí ba dấu cách.


5
Câu trả lời thực sự tốt. Đặc biệt là thực tế là 3 không gian ở cuối điểm dừng chân là tốt để biết (và không tìm thấy ở nhiều nơi trên internet).
Legolas

5
Đây là câu trả lời sẽ được tự động hiển thị dưới dạng màn hình khởi động khi mở triển vọng.
Andrius Naruševičius

2
Tại sao điều này không được ghi lại ở bất cứ đâu? Đây là một thông tin rất hữu ích để có. Cảm ơn bạn đã thực hiện nghiên cứu!
Bobson

4
+1 cho "Các dòng kết thúc bằng 3 dấu cách trở lên sẽ tắt tiếp tục." Điều này đã có hiệu quả đối với tôi để đảm bảo Outlook hiển thị một dòng mới cho các dòng ngắn.
saille

Bạn đã cứu đêm của tôi! Cảm ơn rất nhiều!
Vitalii Vitrenko

29

Bạn có thể buộc ngắt dòng trong triển vọng khi đính kèm một (hoặc hai?) Ký tự tab (\ t) ngay trước dấu ngắt dòng (CRLF).

Thí dụ:

This is my heading in the mail\t\n
Just here Outlook is forced to begin a new line.

Nó có vẻ hoạt động trên Outlook 2010. Vui lòng kiểm tra xem điều này có hoạt động trên các phiên bản khác không.

Xem thêm Outlook tự động làm sạch ngắt dòng và chỉnh sửa định dạng email của tôi


Cảm ơn rất nhiều. Theo mẹo của bạn, tôi đang sử dụng "\ t" + Environment.NewLine để bắt đầu mọi dòng mới. Nó hoạt động ít nhất cho Outlook 2013 mà tôi đang sử dụng.
Hồng

24

Microsoft Outlook 2002 trở lên xóa "ngắt dòng bổ sung" khỏi tin nhắn văn bản theo mặc định (kb308319) . Nghĩa là, Outlook dường như đơn giản bỏ qua nguồn cấp dòng và / hoặc trình tự xuống dòng trong tin nhắn văn bản, chạy tất cả các dòng cùng nhau.

Điều này có thể gây ra sự cố nếu bạn đang cố gắng viết mã sẽ tự động tạo thông báo email để ai đó sử dụng Outlook đọc.

Ví dụ: giả sử bạn muốn cung cấp từng phần thông tin riêng biệt trên các dòng riêng biệt để rõ ràng, như sau:

Giao dịch cần chú ý!
Ngày đăng: 30/01/2009
Số tiền: $ 12,222,06
TransID: 8gk288g229g2kg89 Mã bưu chính
: 91543

Người nhận Outlook của bạn sẽ thấy tất cả thông tin được kết hợp với nhau, như sau:

Giao dịch cần chú ý! Ngày đăng: 30/01/2009 Số tiền: $ 12,222,06 TransID: 8gk288g229g2kg89 ZipCode: 91543

Dường như không có một giải pháp dễ dàng. Các lựa chọn thay thế là:

  1. Bạn có thể cung cấp hai bộ ngắt dòng giữa mỗi dòng. Điều đó không ngăn Outlook kết hợp các dòng vào một dòng, nhưng sau đó nó sẽ hiển thị thêm một dòng trống giữa mỗi dòng (tạo ra vấn đề ngược lại). Bằng cách "cung cấp hai bộ ngắt dòng", ý tôi là bạn nên sử dụng "\ r \ n \ r \ n" hoặc "\ r \ r" hoặc "\ n \ n" chứ không phải "\ r \ n" hoặc "\ n \ r ".
  2. Bạn có thể cung cấp hai khoảng trắng ở đầu mỗi dòng trong nội dung email của mình. Điều đó tránh tạo thêm một dòng trống giữa mỗi dòng. Nhưng điều này hoạt động tốt nhất nếu mỗi dòng trong thư của bạn khá ngắn, bởi vì người dùng có thể đang xem trước văn bản trong một cửa sổ Outlook rất hẹp bao bọc phần cuối của mỗi dòng đến vị trí đầu tiên trên dòng tiếp theo, nơi nó sẽ không xếp hàng với các dòng thụt lề hai dấu cách của bạn. Chiến lược này đã được sử dụng cho một số bản tin .
  3. Bạn có thể từ bỏ việc sử dụng định dạng văn bản thuần túy và sử dụng định dạng html.

đã thay thế 3, từ bỏ văn bản thuần túy và sử dụng định dạng html với <br>.
bob

10

Tôi đã gặp vấn đề tương tự và đã tìm ra giải pháp. Hãy thử cách này: %0D%0Ađể thêm dấu ngắt dòng.


4

Tôi đã sử dụng ngắt dòng html thay vì "\ n". Nó hoạt động tốt.


4

Thêm "\ t \ r \ n" (\ t cho TAB) thay vì "\ r \ n" đã hiệu quả với tôi trên Outlook 2010. Lưu ý: thêm 3 dấu cách vào cuối mỗi dòng cũng làm tương tự nhưng điều đó trông giống như một hack lập trình!


2

Bí quyết là sử dụng encodeURIComponent()chức năng từ js:

var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:x@y.com?body=" + encodeURIComponent(formattedBody);

KẾT QUẢ:

FirstLine
SecondLine
ThirdLine

1

Đối với Outlook 2010 và các phiên bản mới hơn, hãy sử dụng \ t \ n thay vì sử dụng \ r \ n.


0

Bạn cần gửi email HTML. Với <br />s trong email, bạn sẽ luôn bị ngắt dòng.


0

Nếu bạn có thể thêm vào dấu '.' (dấu chấm) ở cuối mỗi dòng, điều này dường như ngăn Outlook làm hỏng định dạng văn bản.


0

Hãy thử \r\cthay vì\n .

CHỈNH SỬA: Tôi nghĩ @Robert Wilkinson đã đúng. \r\n. Bộ nhớ không còn như trước đây.


0

Phần \nlớn hiệu quả đối với chúng tôi, nhưng Outlook đôi khi tự nó loại bỏ các ngắt dòng như bạn nói.


0

Tôi cũng gặp sự cố này với loại thư thuần túy / văn bản. Trước đó, tôi đã sử dụng "\ n \ n" nhưng có hai ngắt dòng. Sau đó, tôi sử dụng "\ t \ n" và nó hoạt động. Tôi đã sử dụng StringBufferjava để nối nội dung.
Nội dung được in ở dòng tiếp theo trong thư Outlook 2010.


0

Tôi đã gặp khó khăn với tất cả các giải pháp trên và không có gì giúp đỡ ở đây, bởi vì tôi đã sử dụng biến Chuỗi (văn bản thuần túy từ JTextPane) kết hợp với định dạng "văn bản / html" trong thư viện e-mail của mình.

Vì vậy, giải pháp cho vấn đề này là sử dụng "văn bản / trơn", thay vì "văn bản / html" và không cần phải thay thế các ký tự trả về:

MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(message, "text/plain");

0

Đặt văn bản trong <pre>Thẻ và outlook sẽ định dạng và hiển thị văn bản một cách chính xác.

tôi đã định nghĩa nó bằng nội tuyến CSS trong HTML Body như:

CSS:

pre {
 font-family: Verdana, Geneva, sans-serif;
}

tôi đã xác định font-family phải đặt font.

HTML:

<td width="70%"><pre>Entry Date/Time:       2013-09-19 17:06:25
Entered By:     Chris

worklog mania

____________________________________________________________________________________________________

Entry Date/Time:        2013-09-19 17:05:42
Entered By:     Chris

this is a new Worklog Entry</pre></td>

Cũng từ đây: stackoverflow.com/a/24666437/1134961 Chỉ cần bọc trong thẻ <pre> </pre>.
technocrat

0

Bởi vì nó là một truy vấn, chỉ có phần trăm ký tự thoát hoạt động, có nghĩa là% 0A cung cấp cho bạn dấu ngắt dòng. Ví dụ,

&lt;a href=&quot;mailto:someone@gmail.com?Subject=TEST&amp;amp;body=Hi there,%0A%0AHow are you?%0A%0AThanks&quot;&gt;email to me&lt;/a&gt;

0

Tôi cũng gặp sự cố này với loại thư thuần túy / văn bản. Nguồn cấp dữ liệu định dạng \fđã làm việc cho tôi.


0

Đôi khi bạn phải nhập \ r \ n hai lần để buộc triển vọng thực hiện ngắt.

Thao tác này sẽ thêm một dòng trống nhưng tất cả các dòng sẽ có dấu ngắt.


0

\ r \ n sẽ không hoạt động cho đến khi bạn đặt loại nội dung là văn bản.

message.setBody(MessageBody.getMessageBodyFromText(msg));
BodyType type = BodyType.Text;
message.getBody().setBodyType(type);

0

Tôi đã gặp phải vấn đề tương tự và đây là mã đã giải quyết nó:

\t\n - for new line in Email service JavaMailSender

String mailMessage = JSONObject.toJSONString("Your message").replace(",", "\t\n").trim();

-1

ĐƯỢC GIẢI QUYẾT TRONG ĐƠN CỦA TÔI

Trong ứng dụng của mình, tôi đang cố gửi một email có nội dung thư được người dùng nhập vào vùng văn bản. Khi thư được gửi đi, outlook tự động loại bỏ ngắt dòng do người dùng nhập.

ví dụ: nếu người dùng đã nhập
Yadav
Mahesh

triển vọng hiển thị nó là
YadavMahesh

Giải pháp: Tôi đã thay đổi ký tự ngắt dòng "\ r \ n" bằng "\ par" (nhớ nhấn khoảng trắng ở cuối mã RTF "\ par") và ngắt dòng được thực hiện lại.

Chúc mừng,
Mahesh


-1

Thử cái này:

message.setContent(new String(body.getBytes(), "iso-8859-1"),
                    "text/html; charset=\"iso-8859-1\"");

Trân trọng, Mohammad Rasool Javeed


-1

Tôi có một giải pháp tốt mà tôi đã thử nó, đó là chỉ cần thêm Char (13) ở cuối dòng như ví dụ sau:

Dim S As String
 S = "Some Text" & Chr(13)
 S = S + "Some Text" & Chr(13)

-1

nếu tin nhắn là văn bản / thuần túy bằng cách sử dụng, \ r \ n sẽ hoạt động; nếu loại tin nhắn là văn bản \ html, hãy sử dụng< p/>


-1

nếu công việc cần được thực hiện với văn bản được định dạng không có mã hóa html. nó có thể dễ dàng đạt được với kịch bản sau tạo phần tử div ngay lập tức và sử dụng <pre></pre>phần tử html để giữ định dạng.

var email_body = htmlEncode($("#Body").val());

 function htmlEncode(value) {
    return "<pre>" + $('<div/>').text(value).html() + "</pre>";
}

-1

Không chắc liệu nó có được đề cập ở trên hay không nhưng Outlook có cài đặt hộp kiểm được gọi là "Xóa ngắt dòng thừa trong tin nhắn văn bản thuần túy" và được chọn theo mặc định. Nó nằm ở một vị trí khác cho các phiên bản Outlook khác nhau nhưng đối với năm 2010, hãy chuyển đến tab "Tệp". Chọn "Tùy chọn => Thư" Cuộn xuống "Định dạng thư" Bỏ chọn hộp kiểm.

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.