Javaでメールを送信しようとしていますが、Outlookでメールの本文を読むと、改行がすべて削除されます。\ nを最後に追加しています行ですが、それ以外に特別なことが必要ですか?受信者は常にOutlookを使用しています。
Outlookに「改行を削除する」「機能」があるというMicrosoft.comのページを見つけたので、その設定をオフにする以外に解決策がないということですか?
ありがとう
ソリューションとして\r\n
を使用する必要があります。
私は今日これと戦っています。余分な改行を削除する動作を「継続」と呼びましょう。少し実験すると、次の動作が見つかります。
これらすべてを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以降では、デフォルトでテキストメッセージから「余分な改行」が削除されます (kb308319) 。つまり、Outlookはテキストメッセージ内の改行やキャリッジリターンシーケンスを単に無視し、すべての行をまとめて実行しているように見えます。
これは、Outlookを使用しているユーザーが読むための電子メールメッセージを自動的に生成するコードを作成しようとする場合に問題を引き起こす可能性があります。
たとえば、次のように、明確にするために、別々の行に個別の情報を提供するとします。
トランザクションには注意が必要です!
投稿日:1/30/2009
金額:12,222.06ドル
TransID:8gk288g229g2kg89
郵便番号:91543
Outlookの受信者には、次のようにすべての情報が破壊されて表示されます。
トランザクションには注意が必要です!投稿日:1/30/2009金額:$ 12,222.06 TransID:8gk288g229g2kg89 ZipCode:91543
簡単な解決策はないようです。代替手段は次のとおりです。
私は同じ問題を抱えていて、解決策を見つけました。これを試して: %0D%0A
改行を追加します。
"\ n"の代わりにhtml改行を使用しました。うまくいきました。
Outlook 2010では、「\ r\n」の代わりに「\ t\r\n」(TABの場合は\ t)を追加するとうまくいきました。注:各行の最後に3つのスペースを追加しても同じことが行われますが、これはプログラミングハックのように見えます。
私は上記のすべてのソリューションに苦労していましたが、ここでは何の助けもありませんでした。これは、文字列変数(JTextPaneのプレーンテキスト)を電子メールライブラリの "text/html"フォーマットと組み合わせて使用したためです。
したがって、この問題の解決策は、「text/html」の代わりに「text/plain」を使用することであり、戻り文字をまったく置き換える必要はありません。
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(message, "text/plain");
これはクエリであるため、エスケープされたパーセント文字のみが機能します。つまり、%0Aは改行を提供します。例えば、
<a href="mailto:[email protected]?Subject=TEST&amp;body=Hi there,%0A%0AHow are you?%0A%0AThanks">email to me</a>
テキストを<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>
Outlook 2010以降のバージョンでは、\ r\nではなく\ t\nを使用します。
\ r\nは、本文タイプをテキストとして設定するまで機能しません。
message.setBody(MessageBody.getMessageBodyFromText(msg));
BodyType type = BodyType.Text;
message.getBody().setBodyType(type);
トリックは、jsのencodeURIComponent()
機能を使用することです。
var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:[email protected]?body=" + encodeURIComponent(formattedBody);
結果:
FirstLine
SecondLine
ThirdLine
HTMLメールを送信する必要があります。 <br />
sをメールで送信すると、常に改行が入ります。
この問題はプレーン/テキストメールタイプでも発生しました。フォームフィード\f
私のために働いた。
メッセージがtext/plain usingの場合、\ r\nは機能するはずです。メッセージタイプがtext\htmlの場合、< p/>
を使用します
\r\c
の代わりに \n
。
編集: @Robert Wilkinsonが正しかったと思う。 \r\n
。メモリは、以前のようにはなりません。
\n
主に機能しますが、Outlookは、あなたが言うように、改行を削除するためにそれ自体を使用することがあります。
htmlエンコーディングを使用せずにフォーマットされたテキストで作業を行う必要がある場合。 その場でdiv要素を作成する と<pre></pre>
書式設定を維持するためのhtml要素。
var email_body = htmlEncode($("#Body").val());
function htmlEncode(value) {
return "<pre>" + $('<div/>').text(value).html() + "</pre>";
}
これを試して:
message.setContent(new String(body.getBytes(), "iso-8859-1"),
"text/html; charset=\"iso-8859-1\"");
よろしく、モハマド・ラソール・ジェイブド
私のアプリケーションで解決済み
私のアプリケーションでは、ユーザーがテキスト領域にメッセージ本文を入力したメールを送信しようとしました。メールが送信されると、Outlookはユーザーが入力した改行を自動的に削除しました。
例:ユーザーが入力した場合
ヤダブ
マヘシュ
Outlookはそれを次のように表示しました
ヤダブマヘシュ
解決策:改行文字 "\ r\n"を "\ par"に変更しました(RTF code "\ par")および改行は再描画されます。
乾杯、
マヘシュ
「。」を追加できる場合(ドット)各行の最後の文字、これはOutlookがテキストの書式設定を台無しにするのを防ぐようです。
私はそれを試してみましたが、次の例のように行の最後にChar(13)を追加するだけです。
Dim S As String
S = "Some Text" & Chr(13)
S = S + "Some Text" & Chr(13)
また、プレーン/テキストメールタイプでこの問題が発生しました。以前、「\ n\n」を使用しましたが、2つの改行がありました。次に、「\ t\n」を使用しましたが、うまくいきました。コンテンツを追加するためにJavaでStringBuffer
を使用していました。
Outlook 2010メールの次の行にコンテンツが印刷されました。
Outlookに強制的にブレークさせるために、\ r\nを2回入力する必要がある場合があります。
これにより、空の行が1行追加されますが、すべての行に改行が含まれます。