Java でメールを送信しようとしていますが、Outlook でメールの本文を読むと、改行がすべて削除されてしまいます。行末に \n を入れていますが、それ以外に何か特別なことはありますか? 受信者は常に Outlook を使用します。
Outlook には「改行を削除する」「機能」があると書かれている microsoft.com のページを見つけましたが、これは、その設定をオフにする以外に解決策がないということですか?
ありがとう
Java でメールを送信しようとしていますが、Outlook でメールの本文を読むと、改行がすべて削除されてしまいます。行末に \n を入れていますが、それ以外に何か特別なことはありますか? 受信者は常に Outlook を使用します。
Outlook には「改行を削除する」「機能」があると書かれている microsoft.com のページを見つけましたが、これは、その設定をオフにする以外に解決策がないということですか?
ありがとう
今日はこれと戦っています。余分な改行を削除する動作を「継続」と呼びましょう。少し実験すると、次の動作が見つかります。
Outlook2007でこれらすべてを試したことに注意してください。YMMV。
したがって、可能であれば、すべての箇条書き項目を文末の句読点、タブ、または3つのスペースで終了します。
ソリューションとして使用する必要があります\r\n
。
改行 (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 を使用しているユーザーが読む電子メール メッセージを自動的に生成するコードを記述しようとすると、問題が発生する可能性があります。
たとえば、次のように、明確にするために個別の行に個別の情報を提供するとします。
取引注意!
投稿日: 2009 年 1 月 30 日
金額: $12,222.06
TransID: 8gk288g229g2kg89 郵便番号
: 91543
Outlook の受信者には、次のようにすべての情報がまとめて表示されます。
取引注意!投稿日: 2009 年 1 月 30 日 金額: $12,222.06 TransID: 8gk288g229g2kg89 郵便番号: 91543
簡単な解決策はないようです。代替手段は次のとおりです。
私は同じ問題を抱えていて、解決策を見つけました。これを試してください: %0D%0A
改行を追加します。
"\n" の代わりに html の改行を使用しました。うまくいきました。
"\r\n" の代わりに "\t\r\n" (TAB の場合は \t) を追加すると、Outlook 2010 でうまくいきました。注 : 各行の末尾に 3 つのスペースを追加しても同じことが行われますが、これはプログラミング ハックのように見えます!
トリックはencodeURIComponent()
、js の機能を使用することです。
var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:x@y.com?body=" + encodeURIComponent(formattedBody);
結果:
FirstLine
SecondLine
ThirdLine
場合によっては、\r\n を 2 回入力して、outlook に中断を強制する必要があります。
これにより、空行が 1 行追加されますが、すべての行が改行されます。
HTML メールを送信する必要があります。メールに<br />
s があると、常に改行が表示されます。
プレーン/テキストメールタイプでもこの問題が発生しました。フォームフィード \f
はうまくいきました。
プレーン/テキスト メール タイプでもこの問題が発生しました。先ほど「\n\n」を使ったのですが、改行が2つありました。次に、「\t\n」を使用しましたが、うまくいきました。私はStringBuffer
Javaでコンテンツを追加するために使用していました。
Outlook 2010 メールの次の行にコンテンツが印刷されました。
\r\c
の代わりに試してください\n
。
編集: @Robert Wilkinson は正しかったと思います。\r\n
. メモリは、以前のものではありません。
大\n
部分はうまくいきますが、Outlookは、あなたが言うように改行を削除することがあります。
これはクエリであるため、パーセント エスケープ文字のみが機能します。つまり、%0A は改行を提供します。例えば、
<a href="mailto:someone@gmail.com?Subject=TEST&amp;body=Hi there,%0A%0AHow are you?%0A%0AThanks">email to me</a>
「.」を追加できる場合 (ドット) 文字を各行の末尾に追加することで、Outlook がテキストの書式設定を台無しにするのを防いでいるようです。
テキストをタグに入れる<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はユーザーが入力した改行を自動的に削除しました。
たとえば、ユーザーが
YadavMaheshに入った
場合
Outlookはそれを
YadavMaheshとして表示しました
解決策:改行文字「\ r \n」を「\par」に変更しました(RTFコード「\ par」の最後にスペースを入れることを忘れないでください)。改行は再スローされます。
乾杯、
マヘシュ
これを試して:
message.setContent(new String(body.getBytes(), "iso-8859-1"),
"text/html; charset=\"iso-8859-1\"");
よろしく、モハマド・ラスール・ジャビード
html エンコーディングを使用せずに書式設定されたテキストを使用して作業を行う必要がある場合。その場で div 要素を作成し、 html 要素を使用<pre></pre>
してフォーマットを維持する次のシナリオで簡単に実現できます。
var email_body = htmlEncode($("#Body").val());
function htmlEncode(value) {
return "<pre>" + $('<div/>').text(value).html() + "</pre>";
}
次の例のように、行末に Char(13) を追加するだけです。
Dim S As String
S = "Some Text" & Chr(13)
S = S + "Some Text" & Chr(13)
上記で言及されたかどうかはわかりませんが、Outlook には「プレーン テキスト メッセージの余分な改行を削除する」というチェックボックス設定があり、デフォルトでオンになっています。異なるバージョンの Outlook では別の場所にありますが、2010 の場合は [ファイル] タブに移動します。「オプション => メール」を選択し、「メッセージ形式」までスクロールします。チェックボックスをオフにします。
メッセージが text/plain を使用している場合、\r\n が機能するはずです。メッセージ タイプが text\html の場合は、< p/>