78

Java でメールを送信しようとしていますが、Outlook でメールの本文を読むと、改行がすべて削除されてしまいます。行末に \n を入れていますが、それ以外に何か特別なことはありますか? 受信者は常に Outlook を使用します。

Outlook には「改行を削除する」「機能」があると書かれている microsoft.com のページを見つけましたが、これは、その設定をオフにする以外に解決策がないということですか?

ありがとう

4

27 に答える 27

203

今日はこれと戦っています。余分な改行を削除する動作を「継続」と呼びましょう。少し実験すると、次の動作が見つかります。

  • すべてのメッセージは継続をオフにして始まります。
  • 40文字未満の行は継続をトリガーしませんが、継続がオンの場合、改行は削除されます。
  • 40文字以上の行は、継続をオンにします。イベントが発生してオフになるまでオンのままです。
  • ピリオド、疑問符、感嘆符、またはコロンで終わる行は、継続をオフにします。(Outlookは、それが文の終わりであると想定していますか?)
  • 継続をオフにする行は改行で始まりますが、40文字より長い場合は継続をオンに戻します。
  • タブで開始または終了する行は、継続をオフにします。
  • 2つ以上のスペースで始まる行は、継続をオフにします。
  • 3つ以上のスペースで終わる行は、継続をオフにします。

Outlook2007でこれらすべてを試したことに注意してください。YMMV。
したがって、可能であれば、すべての箇条書き項目を文末の句読点、タブ、または3つのスペースで終了します。

于 2009-10-28T16:59:45.980 に答える
30

ソリューションとして使用する必要があります\r\n

于 2008-09-25T21:01:54.647 に答える
29

改行 (CRLF) の直前に 1 つ (または 2 つ?) のタブ文字 (\t) を追加すると、Outlook で強制的に改行できます。

例:

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

Outlook 2010 で動作するようです。他のバージョンで動作するかテストしてください。

Outlook が改行を自動クリーニングし、電子メール形式を台無しにするも参照してください。

于 2011-02-17T08:54:35.600 に答える
24

Microsoft Outlook 2002 以降では、デフォルトでテキスト メッセージから「余分な改行」が削除されます(kb308319)。つまり、Outlook は、テキスト メッセージのライン フィードやキャリッジ リターン シーケンスを単純に無視し、すべての行をまとめて実行しているように見えます。

Outlook を使用しているユーザーが読む電子メール メッセージを自動的に生成するコードを記述しようとすると、問題が発生する可能性があります。

たとえば、次のように、明確にするために個別の行に個別の情報を提供するとします。

取引注意!
投稿日: 2009 年 1 月 30 日
金額: $12,222.06
TransID: 8gk288g229g2kg89 郵便番号
: 91543

Outlook の受信者には、次のようにすべての情報がまとめて表示されます。

取引注意!投稿日: 2009 年 1 月 30 日 金額: $12,222.06 TransID: 8gk288g229g2kg89 郵便番号: 91543

簡単な解決策はないようです。代替手段は次のとおりです。

  1. 各行の間に2セットの改行を指定できます。これにより、Outlook が行を 1 行に結合することはできなくなりますが、各行の間に余分な空白行が表示されます (逆の問題が発生します)。「2セットの改行を提供する」とは、「\r\n\r\n」または「\r\r」または「\n\n」を使用する必要があることを意味しますが、「\r\n」または「\n」は使用しないでください\r".
  2. 電子メール メッセージの本文の各行の先頭に 2 つのスペースを指定できます。これにより、各行の間に余分な空白行が入るのを回避できます。ただし、これは、メッセージの各行がかなり短い場合に最適です。ユーザーは、各行の終わりを次の行の最初の位置に折り返す非常に狭い Outlook ウィンドウでテキストをプレビューしている可能性があるためです。 2 つのスペースでインデントされた行に合わせます。この戦略は、一部のニュースレターで使用されています。
  3. プレーンテキスト形式の使用をあきらめて、html 形式を使用できます。
于 2009-01-30T23:29:22.373 に答える
10

私は同じ問題を抱えていて、解決策を見つけました。これを試してください: %0D%0A改行を追加します。

于 2010-12-14T13:35:58.827 に答える
6

"\n" の代わりに html の改行を使用しました。うまくいきました。

于 2014-09-21T04:49:49.253 に答える
4

"\r\n" の代わりに "\t\r\n" (TAB の場合は \t) を追加すると、Outlook 2010 でうまくいきました。注 : 各行の末尾に 3 つのスペースを追加しても同じことが行われますが、これはプログラミング ハックのように見えます!

于 2016-04-12T15:03:59.223 に答える
2

トリックはencodeURIComponent()、js の機能を使用することです。

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

結果:

FirstLine
SecondLine
ThirdLine
于 2014-09-26T15:28:04.493 に答える
0

場合によっては、\r\n を 2 回入力して、outlook に中断を強制する必要があります。

これにより、空行が 1 行追加されますが、すべての行が改行されます。

于 2015-09-15T17:56:29.963 に答える
0

HTML メールを送信する必要があります。メールに<br />s があると、常に改行が表示されます。

于 2008-09-25T21:15:03.867 に答える
0

プレーン/テキストメールタイプでもこの問題が発生しました。フォームフィード \fはうまくいきました。

于 2014-11-13T16:50:54.097 に答える
0

プレーン/テキスト メール タイプでもこの問題が発生しました。先ほど「\n\n」を使ったのですが、改行が2つありました。次に、「\t\n」を使用しましたが、うまくいきました。私はStringBufferJavaでコンテンツを追加するために使用していました。
Outlook 2010 メールの次の行にコンテンツが印刷されました。

于 2013-08-26T20:09:52.453 に答える
0

\r\cの代わりに試してください\n

編集: @Robert Wilkinson は正しかったと思います。\r\n. メモリは、以前のものではありません。

于 2008-09-25T20:59:03.497 に答える
0

\n部分はうまくいきますが、Outlookは、あなたが言うように改行を削除することがあります。

于 2008-09-25T21:03:03.333 に答える
0

これはクエリであるため、パーセント エスケープ文字のみが機能します。つまり、%0A は改行を提供します。例えば、

&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;
于 2013-10-26T13:06:52.353 に答える
0

「.」を追加できる場合 (ドット) 文字を各行の末尾に追加することで、Outlook がテキストの書式設定を台無しにするのを防いでいるようです。

于 2011-05-17T09:22:14.447 に答える
0

テキストをタグに入れる<pre>と、Outlook はテキストを正しく書式設定して表示します。

次のように、HTML Body の CSS インラインで定義しました。

CSS:

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

フォントセットに必要なフォントファミリを定義しました。

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>
于 2013-09-24T15:48:36.267 に答える
-1

私のアプリケーションで解決

私のアプリケーションでは、ユーザーがテキスト領域にメッセージ本文を入力した電子メールを送信しようとしていました。メールが送信されると、Outlookはユーザーが入力した改行を自動的に削除しました。

たとえば、ユーザーが
YadavMaheshに入った
場合

Outlookはそれを
YadavMaheshとして表示しました

解決策:改行文字「\ r \n」を「\par」に変更しました(RTFコード「\ par」の最後にスペースを入れることを忘れないでください)。改行は再スローされます。

乾杯、
マヘシュ

于 2010-12-30T06:41:40.457 に答える
-1

これを試して:

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

よろしく、モハマド・ラスール・ジャビード

于 2009-12-01T11:57:25.343 に答える
-1

html エンコーディングを使用せずに書式設定されたテキストを使用して作業を行う必要がある場合。その場で div 要素を作成し、 html 要素を使用<pre></pre>してフォーマットを維持する次のシナリオで簡単に実現できます。

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

 function htmlEncode(value) {
    return "<pre>" + $('<div/>').text(value).html() + "</pre>";
}
于 2015-10-22T13:29:06.623 に答える
-1

次の例のように、行末に Char(13) を追加するだけです。

Dim S As String
 S = "Some Text" & Chr(13)
 S = S + "Some Text" & Chr(13)
于 2012-04-30T11:19:45.657 に答える
-1

上記で言及されたかどうかはわかりませんが、Outlook には「プレーン テキスト メッセージの余分な改行を削除する」というチェックボックス設定があり、デフォルトでオンになっています。異なるバージョンの Outlook では別の場所にありますが、2010 の場合は [ファイル] タブに移動します。「オプション => メール」を選択し、「メッセージ形式」までスクロールします。チェックボックスをオフにします。

于 2018-06-25T20:10:32.090 に答える
-1

メッセージが text/plain を使用している場合、\r\n が機能するはずです。メッセージ タイプが text\html の場合は、< p/>

于 2013-04-09T04:05:49.363 に答える