php-mime-mail-parserで手持ちのメーラーから送信したメールを処理した結果をまとめます。
環境・前提条件
受信側
- PHP 7.0.11
- php-mime-mail-parser 2.4.4
- Postfix 2.10.1
- aliases設定でメールが来ると処理してtxtに書き出す
送信側
文字色や文字サイズ等のhtml装飾は使用せずデフォルトの設定でメールを作成
- SoftbankのiPhoneSE:SMS
- SoftbankのiPhoneSE:@i.~からのメール
- SoftbankのiPhoneSE(OS:9.3.5):DecoMailer ver.3.6.9(アプリ)
- docomoキャリアメール(Android)
- gmail(PCから)
- yahooメール(PCから)
結果
文中の変数
php
$text = $Parser->getMessageBody('text');
$html = $Parser->getMessageBody('html');
$htmlEmbedded = $Parser->getMessageBody('htmlEmbedded');
$attachments = $Parser->getAttachments();
共通
- 絵文字を使うと文字化けを起こす
SoftBank SMS
-
$html
,$htmlEmbedded
は空。 - 本文はすべてプレーンテキストとして処理される
- 画像はすべて添付として処理される
- 文中に画像を挿入した場合どこに挿入されたかはわからない
- 添付画像の名前は元画像のまま
- cidなし
@iからのメール ※要検証
-
$html
,$htmlEmbedded
は空。 - 画像を入れると
$text
内の文章がそこで切れる現象が発生 - その後ろにも貼り付けや添付で画像を配置していたが、画像そのものはinlineとして全て
$attachment
に渡されており、画像そのものも保存されている
デコメーラー
- inline画像はcidを与えられて
$html
には<img src="cid:~~">
として入る - 画像は
- 添付なら
attachment00
~で連番 - インラインなら
image00
~で連番が振られる
- 添付なら
- 元画像の名前は残らない
-
$html
は<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></HEAD><body>
内容</body></HTML>
の形 - 改行は
div
で処理 - 続けて改行した場合は
<div> </div>
が入る
docomoキャリアメール(Android)
- inline画像はcidを与えられて
$html
には<IMG src="cid:~~">
として入る - 画像名は元画像のまま
-
$html
は<HTML><HEAD><META http-equiv="Content-Type" content="text/html; charset=UTF-8"></HEAD><BODY>
内容</BODY></HTML>
の形 - 改行は
div
で処理 - タグは大文字
gmail
- テキスト内に貼り付けた画像は[image: 埋め込み画像 1]の形で
$text
内にも反映 - inline画像はcidを与えられて
$html
には<img src="cid:~~">
として入る -
$html
ではimgタグ内に画像のサイズや位置等のstyleも入ってくる -
$html
にhtml,body
のタグはなくdiv
の集まりで構成される - 改行は
div
で処理 - 続けて改行した場合は
<div><br></div>
が入る
yahoo
- inline画像は
$attachmennt
としては渡ってこないので画像フォルダには保存されない -
$html
の時点で<img src="data:image/jpeg;base64>
というように文字列で入ってくる -
$html
は<html><body>
内容</body></html>
の形 - 改行は
div
で処理 - 続けて改行した場合は
<div><br></div>
が入る - 添付画像のみが
$attachmennt
として渡される - 添付画像の名前は元画像のまま
雑感
ブログ投稿的な使い方をするために検証したのですが、iPhoneの素のメールが他と違う仕様なのを痛感しました。
何より@iのメールで画像以降の本文が拾えなかったのにびっくりです。
文字コードの絡みだろうな、というのは分かりましたが今回はそれを解消することが目的でないので深くは見ていません。
@iよりはSMSのほうがまだマシ。apple仕様に少しキャリアの補正がかかっているのでしょうか。
絵文字はphp-mime-mail-parser
ではどのメーラーから送っても文字化けしました。
機種依存文字に関しては私が試した文字では一通り問題なし。
yahoo仕様だと$html
と$htmlEmbedded
は同じになります。画像が少ない場合はいいですが、多くなってくると$html
がすごい文字数になるのでDB格納するのもどうなの??って感じですね。。。
gmailとデコメーラーは基本仕様はほぼ同じで、htmlタグの使い方と画像の名前のつけ方が違うぐらいですね。
基本的にhtmlの中に読み込んで使うのでgmailの仕様のほうが便利。
今回試してませんが、html装飾機能を使った場合はdivタグの中に直接styleが書き込まれていく模様です。