問題描述
如何格式化電子郵件中的字符串以便 Outlook 打印換行符? (How do I format a String in an email so Outlook will print the line breaks?)
我正在嘗試用 Java 發送一封電子郵件,但是當我在 Outlook 中閱讀電子郵件的正文時,它消除了我所有的換行符。我將 \n 放在行尾,但除此之外我還需要做些什麼特別的事情嗎?接收方將始終使用 Outlook。
我在 microsoft.com 上發現一個頁面說 Outlook 中有一個“刪除換行符”“功能”,這是否意味著除了取消選中該設置之外沒有其他解決方案可以解決這個問題?
p>謝謝
參考解法
方法 1:
I've just been fighting with this today. Let's call the behavior of removing the extra line breaks "continuation." A little experimenting finds the following behavior:
- Every message starts with continuation off.
- Lines less than 40 characters long do not trigger continuation, but if continuation is on, they will have their line breaks removed.
- Lines 40 characters or longer turn continuation on. It remains on until an event occurs to turn it off.
- Lines that end with a period, question mark, exclamation point or colon turn continuation off. (Outlook assumes it's the end of a sentence?)
- Lines that turn continuation off will start with a line break, but will turn continuation back on if they are longer than 40 characters.
- Lines that start or end with a tab turn continuation off.
- Lines that start with 2 or more spaces turn continuation off.
- Lines that end with 3 or more spaces turn continuation off.
Please note that I tried all of this with Outlook 2007. YMMV. So if possible, end all bullet items with a sentence‑terminating punctuation mark, a tab, or even three spaces.
方法 2:
You need to use \r\n
as a solution.
方法 3:
You can force a line break in outlook when attaching one (or two?) tab characters (\t) just before the line break (CRLF).
Example:
This is my heading in the mail\t\n
Just here Outlook is forced to begin a new line.
It seems to work on Outlook 2010. Please test if this works on other versions.
See also Outlook autocleaning my line breaks and screwing up my email format
方法 4:
Microsoft Outlook 2002 and above removes "extra line breaks" from text messages by default (kb308319). That is, Outlook seems to simply ignore line feed and/or carriage return sequences in text messages, running all of the lines together.
This can cause problems if you're trying to write code that will automatically generate an email message to be read by someone using Outlook.
For example, suppose you want to supply separate pieces of information each on separate lines for clarity, like this:
Transaction needs attention!
PostedDate: 1/30/2009
Amount: $12,222.06
TransID: 8gk288g229g2kg89
PostalCode: 91543
Your Outlook recipient will see the information all smashed together, as follows:
Transaction needs attention! PostedDate: 1/30/2009 Amount: $12,222.06 TransID: 8gk288g229g2kg89 ZipCode: 91543
There doesn't seem to be an easy solution. Alternatives are:
- You can supply two sets of line breaks between each line. That does stop Outlook from combining the lines onto one line, but it then displays an extra blank line between each line (creating the opposite problem). By "supply two sets of line breaks" I mean you should use "\r\n\r\n" or "\r\r" or "\n\n" but not "\r\n" or "\n\r".
- You can supply two spaces at the beginning of every line in the body of your email message. That avoids introducing an extra blank line between each line. But this works best if each line in your message is fairly short, because the user may be previewing the text in a very narrow Outlook window that wraps the end of each line around to the first position on the next line, where it won't line up with your two‑space‑indented lines. This strategy has been used for some newsletters.
- You can give up on using a plain text format, and use an html format.
方法 5:
I had the same issue, and found a solution. Try this: %0D%0A
to add a line break.
(by MattGrommes、mtruesdell、Robert Wilkinson、stephg、user60849、Mark)