Help us understand the problem. What is going on with this article?

勘違いしがちなメールの規格(MIME-BASE64)

勘違いしがちな内容

メールは Base64でエンコードして送信すれば良い

さて、これのどこに勘違いがあるでしょうか?

まず、MIMEとBase64は以下の通り、全く別々のものだということです。

MIMEとは

Mutipurpose Internet Mail Extensions
(多目的インターネットメール拡張仕様)
→メール通信に使用される規格のこと

この通信規格において、 Base64を用いて件名をエンコードすること が定められている。

Base64

文字列を アルファベット(26) ✕ 2(大文字・小文字)と 数字(0-9) 、特定の記号(?,=など)の合計64文字のみで表した文字列に変換するエンコード手法のこと
→環境依存文字やマルチバイト文字などを使用できない環境に送信する際、文字化けなどを防ぐために利用される規格

よくある問題(改行コード問題)

メールの件名が長すぎて、文字化けを起こしてしまった!!

よく聞く話ですが、Base64には以下の仕様があります。

Base64

・エンコード後の文字列は998文字を超えてはいけない(MUST)

→仕様を策定した当初、998文字を超えると入出力上の最大文字数を超えてしまう危険性が高かったためだそう

・エンコード後の文字列は一行あたり78文字であるべきである(SHOULD)

→これは画面上に表示する際、78文字を超えると表示に崩れが発生する可能性が高かったためだそう

エンコードを行うにあたって 使用している言語によって異なります が、76文字や78文字で改行コードを挿入するのが一般的なエンコード方法になっているようです。

MIME

メール(Base64エンコード後)に以下の文字列を含んではいけない
・スペース
・タブ
・改行コード

一方でMIMEは、 エンコード語の文字列に改行コードが含まれることを想定していません。

結論

メールは Base64でエンコードし、禁則文字(スペース、タブ、改行コード)を削除したデータを送信すれば良い

・Base64のエンコードは あくまでもBase64の仕様に則って行われるもの (MIMEとは関係ない)
・MIMEはBase64を利用しているだけ

Base64でエンコードした上で、MIMEの仕様に沿ったデータ(改行コードを含まない)に加工する必要があるのに、Base64でエンコードして送信すればいい というのは 誤り です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away