【PHP】qmail, sendmail, mb_send_mailでメール本文が途中から文字化けした時の対象方法とは?

スポンサーリンク
※当サイトは、一部ページでアフィリエイト広告を利用しています。
※当サイトは、一部ページでアフィリエイト広告を利用しています。

phpで「qmail」「sendmail」「mb_send_mail」を使ってメールを送ってみたところ、メール本文の途中から文字化けが発生してしまった。

スポンサーリンク

原因

「sendmail」「qmail」「Postfix」でメールを送信する場合、改行なしで1行に「1,000バイト」を超えるデータが送付された場合、自動で改行コードが挿入されてしまう。

その際に、マルチバイト文字列など全く考慮されずに改行コードが挿入されてしまうため、メール本文で途中から文字化けが発生してしまう。

対象方法

①システムからメールを送る際に1,000バイトを超えないようにする

システムを使うのが自分だけの場合、メール本文に適度に改行を加え、1行あたり1,000バイトを超えないように気をつければ、特にシステム上のプログラムを修正する必要ない。

また、注意書きで改行を適度に加えるように促すのもいいかもしれない。

②システム上で改行を加える

メール送信のフォームが一般ユーザーに公開されている場合、①のように注意書きだけでは制御できない可能性がある。

そのため、自動で改行コードが加えられる前に、こちらで改行コードを加えておく必要がある。

「mb_strcut」などを用いてバイト数で文字列を切り出し、適度に改行コードを加えるとよい。

コメント

タイトルとURLをコピーしました