1

内部CRMには、メモやメッセージを残すことができる単純なhtml入力テキストエリアがあります。後でこの情報を使用してこれを電子メールで送信しますが、その電子メールはHTMLであるため、フォーマットはすべて間違っています。

たとえば、MYSQLテーブルに次のようなものがある場合:

This is a test message!

Some line
Some more lines

後でこれを電子メールで送信すると、次のようになります。

This is a test message! Some line Some more lines

これは明らかに望ましくありませんが、複雑なWYSIWYGエディターをCRMに追加したくありません。改行を許可できますか?もしそうなら、どのように?

すべての電子メールクライアントでサポートされているわけではないと思うので、タグを使用したくありません<pre></pre>(間違っている可能性があります)。

4

5 に答える 5

2

text/plainメッセージでHTMLタグを使用する予定がない場合は、ヘッダーを使用できます。(つまり、色、リンク、テキストの書式設定はありません)。

\nまた、テキスト内のすべてのsをに置き換えるための迅速で汚い解決策を作成することもできます<br>\n

于 2012-10-02T14:37:56.087 に答える
2

問題は、htmlがすべての空白を単一のスペースとしてレンダリングすることです。受信した電子メールのソースを見ると、改行がそこにあるに違いありません(そうでない場合、問題は電子メールの生成側にあります)。

<pre></pre>あなたができる最も簡単なことだと思います。

于 2012-10-02T14:38:39.027 に答える
1

<br>基本的な解決策は、新しい行をsに置き換えることです。

より賢いものは、複数の改行を特別に考慮します(たとえば/\n\s*\n/、段落を終了して新しい段落を開始するポイントとして扱う(</p><p>))。

詳細は、MySQLデータから電子メールを生成するために使用している言語によって異なります。Markdownパーサーのようなものを検討することをお勧めします。

于 2012-10-02T14:37:47.137 に答える
0

HTMLとプレーンテキストの2つのフレーバーでメールを送信できます。HTMLでは、改行は処理されません(ブラウザーの場合と同様)。これがあなたがここでしていることのように見えます。

2つの解決策:プレーンテキストでメールを送信するか、改行を<br>に変更します。

于 2012-10-02T14:39:54.060 に答える
0

PHPが混在していると仮定すると、nl2br()関数があります。そうでなければ、あなた自身を転がすことは難しいことではありません。

この問題の根本は、ブラウザ(メールクライアントは、レンダリングに埋め込みブラウザを使用できます(たとえば、Outlook)、またはブラウザのように動作します)は、HTMLのタグの外に、任意の量の空白/改行/キャリッジリターンなどを取り込んでレンダリングすることです。単一の空白として。これは、マークアップをインデントし、ブラウザで正常に見えるようにするなどの操作を実行できるようにするためです。

提案されているように、レンダリングを制御するには、マークアップを挿入する必要があります。cmsWYSIWYGエディターと同様に、改行をタグに変換する<br>などです。<p>それか、メールに別の形式を選択してください。

于 2012-10-02T15:13:51.283 に答える