Outlookで改行が印刷されるように、電子メールで文字列をフォーマットするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/136052

質問

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

microsoft.comで、「改行の削除」というページが見つかりました<!> quot; feature <!> quot; Outlookでは、これはその設定をオフにする以外に回避する解決策がないことを意味しますか?

ありがとう

役に立ちましたか?

解決

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

他のヒント

今日、これと戦っています。余分な改行<!> quot; continuation。<!> quot;を削除する動作を呼び出しましょう。少し実験すると、次の動作が見つかります。

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

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

改行(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も参照してください。改行の自動クリーニングと電子メール形式の不正使用

Microsoft Outlook 2002以降では、<!> quot;余分な改行<!> quotが削除されます。デフォルトではテキストメッセージから(kb308319)。つまり、Outlookはテキストメッセージ内の改行やキャリッジリターンシーケンスを単に無視し、すべての行を一緒に実行するようです。

これは、Outlookを使用しているユーザーが読む電子メールメッセージを自動的に生成するコードを作成しようとしている場合に問題を引き起こす可能性があります。

たとえば、次のように、わかりやすくするために、別々の行に別々の情報を提供するとします。

トランザクションには注意が必要です!
投稿日:2009年1月30日
金額:12,222.06ドル
TransID:8gk288g229g2kg89
郵便番号:91543

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

トランザクションには注意が必要です!投稿日:2009年1月30日金額:12,222.06ドルTransID:8gk288g229g2kg89 ZipCode:91543

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

  1. 各行間に 2つの改行セットを指定できます。これにより、Outlookは行を1行に結合できなくなりますが、各行の間に余分な空白行が表示されます(反対の問題が発生します)。 <!> quot;で2組の改行を指定します<!> quot; <!> quot; \ r \ n \ r \ n <!> quot;を使用する必要があります。または<!> quot; \ r \ r <!> quot;または<!> quot; \ n \ n <!> quot; <!> quot; \ r \ n <!> quotではありません;または<!> quot; \ n \ r <!> quot;。
  2. 電子メールメッセージの本文の各行の先頭に2つのスペースを指定できます。これにより、各行の間に余分な空白行が挿入されなくなります。しかし、これは、メッセージの各行がかなり短い場合に最も効果的です。ユーザーが各行の終わりを次の行の最初の位置に折り返す非常に狭いOutlookウィンドウでテキストをプレビューしている可能性があるためです2つのスペースでインデントされた行と整列します。この戦略は、一部の newsletters 。 >
  3. プレーンテキスト形式の使用をあきらめ、html形式を使用できます。

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

<!> quot; \ n <!> quot;の代わりにhtml改行を使用しました。 。うまくいきました。

<!> quot; \ t \ r \ n <!> quot;を追加(TABの場合は\ t)<!> quot; \ r \ n <!> quotの代わりに; Outlook 2010で私のために働いた。注:各行の最後に3つのスペースを追加しても同じことを行いますが、プログラミングハックのように見えます!

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

<!> quot; text / html <!> quot;と組み合わせてString変数(JTextPaneからのプレーンテキスト)を使用したため、上記のソリューションのすべてに苦労していましたが、ここでは何も助けませんでした。電子メールライブラリでの書式設定。

したがって、この問題の解決策は、<!> quot; text / html <!> quot;の代わりに<!> quot; text / plain <!> quot;を使用することです。リターン文字を置き換える必要はまったくありません:

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

<pre>タグにテキストを入力すると、Outlookはテキストを正しくフォーマットして表示します。

iはHTML BodyのCSSインラインで次のように定義しました:

CSS:

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

iは、フォントセットに必要なfont-familyを定義しました。

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>

クエリであるため、エスケープされたパーセント文字のみが機能します。つまり、%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;

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

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

結果:

FirstLine
SecondLine
ThirdLine

Outlook 2010以降のバージョンでは、\ r \ nを使用するのではなく、 \ t \ n を使用します。

\ r \ n は、本文の種類をテキストとして設定するまで機能しません。

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

アプリケーションで解決

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

e.gユーザーが入力した場合
ヤダブ
マヘシュ

outlookは
として表示しました ヤダブマヘシュ

解像度:改行文字<!> quot; \ r \ n <!> quot;を変更しました。 with <!> quot; \ par <!> quot; (RTFコード<!> quot; \ par <!> quot;の最後でスペースを押すことを忘れないでください)、改行は再描画されます。

乾杯、
マヘシュ

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

これを試してください:

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

よろしく、 モハマド・ラソール・ジェイブド

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

編集: @Robert Wilkinsonが正しいと思います。 \r\n。メモリは以前のようにはなりません。

\nは主に機能しますが、Outlookがあなたの言うとおりに改行を削除することもあります。

試してみたが、次の例のように行末にChar(13)を追加するだけです。

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

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

を使用します

これは役に立つはずです。 try <!> quot;%0A <!> quot; <!> quot; \ n <!> quot;の代わりに。実際のソースはこちら

です。

<!> quot;%0A <!> quot;を追加する必要があります。コードの新しい行が必要な場所。あなたの場合

 abcParameters.put(defConstants.REPORT_MESSAGE, "Invalid file sent by tt. Hence ffgghh  was unable
              to process it : " + s+ "%0A" +e.getMessage().toString());

また、プレーン/テキストメールタイプでこの問題が発生しました。以前、<!> quot; \ n \ n <!> quot;を使用しました。しかし、2つの改行がありました。次に、<!> quot; \ t \ n <!> quot;を使用しました。そしてそれは働いた。 JavaでStringBufferを使用してコンテンツを追加していました。
コンテンツは、Outlook 2010メールの次の行に印刷されました。

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

outlookにブレークを強制させるために、\ r \ nを2回入力する必要がある場合があります。

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

htmlエンコードなしでフォーマットされたテキストで作業を行う必要がある場合。 その場でdiv要素を作成し、< code>&lt; pre&gt;&lt; / pre&gt; html要素でフォーマットを維持します。

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top