> email | readable | mime <
// Quoted-Printable エンコードで、マルチバイト文字を含むメール本文を MIME 仕様に準拠した形で安全に転送
人間にとって読みやすい形式
英数字や記号など ASCII 部分はそのまま表示されるため、ソースを直接見ても内容が把握しやすくなります。
MIME メール標準
マルチバイト文字を 7bit ベースのメールシステムで扱うために広く利用されている MIME Content-Transfer-Encoding です。
Unicode 対応
UTF-8 を前提としたメールでも、Unicode 文字を安全にエンコードして既存のメールサーバと互換性を保ちます。
>> 技術情報
Quoted-Printable の仕組み:
Quoted-Printable は 8bit データを印字可能な ASCII 文字だけで表現するエンコード方式です。非 ASCII バイトは '=' に続く 2 桁の 16 進数で表現され、1 行の長さはおおよそ 76 文字に制限され、必要に応じてソフト改行が挿入されます。
例:
"Café" → Caf=C3=A9
Quoted-Printable を使う理由:
- >テキスト中心のメール本文の可読性を保ちたい場合
- >国際化された件名・本文を MIME 標準に沿って安全に送信したい場合
- >Base64 ほどのエンコード効率が不要で、読みやすさを優先したい場合
- >古い MTA やゲートウェイが行長制限や 7bit 制約を持つ場合
- >メールヘッダや本文のデバッグをしやすくしたい場合
>> よくある質問
Quoted-Printable とは何ですか?
Quoted-Printable は MIME の Content-Transfer-Encoding の一種で、8bit データを 7bit ベースのメールシステム上で安全に転送するために、非 ASCII バイトを =XX 形式で表現する方式です。
いつ Quoted-Printable を使うべきですか?
本文の大部分がプレーンテキストで、一部にアクセント付き文字や絵文字などが含まれる場合に向いています。生のソースを閲覧したときの読みやすさを重視する場面で選ばれます。
Base64 と何が違いますか?
Base64 ではすべての内容がエンコードされるためソース上は判読できません。一方 Quoted-Printable は ASCII 部分をそのまま残し、特殊文字だけをエンコードするため、ログやソースを直接読んでデバッグしやすくなります。
"=" にはどんな意味がありますか?
"=" はエスケープ文字として使われ、後ろに続く 2 桁の 16 進数が 1 バイトを表します。また行末に置かれた "=" はソフト改行を示し、論理行が次の行まで続くことを意味します。
// クイックリファレンス
| Input | Output | Note |
|---|---|---|
| = | =3D | = is the escape char |
| é (UTF-8 C3 A9) | =C3=A9 | each byte of a multi-byte char |
| space/tab at end of line | =20 / =09 | trailing whitespace |
| = at end of line | (soft line break) | joins lines, max 76 chars/line |
| A–Z a–z 0–9 ! * + - / etc. | as is | printable ASCII 33–126 (except =) |
// コード例
Input Café = 3 € (UTF-8)
Output Caf=C3=A9 =3D 3 =E2=82=AC
Rules RFC 2045 section 6.7
* bytes 33..126 except '=' may stay literal
* everything else -> '=' + two uppercase hex digits
* encoded lines must not exceed 76 characters
* a line ending in '=' is a soft break (no newline in the decoded data)
MIME Content-Transfer-Encoding: quoted-printable
>> その他の質問
Q: Quoted-Printableは何に使いますか?
A: ASCIIが中心で一部に特殊文字を含むメール本文(MIME)に使います。テキストは読める形のまま、それ以外のバイトだけを=XXで符号化します。ヘッダーはContent-Transfer-Encoding: quoted-printableです。
Q: ソフト改行とは?
A: 行末の「=」です。長い行を最大76文字で折り返しても、復号時に改行は生じず、行が単につなぎ直されます。
Q: Quoted-PrintableとBase64のどちらを使いますか?
A: ラテン文字中心のテキストならQPが読みやすくオーバーヘッドも小さいです。バイナリや非ASCII文字体系ならBase64が向き、固定で約33%増えます。QPは最悪1バイトに3文字が必要です。