LoginSignup
3
5

More than 5 years have passed since last update.

php-mime-mail-parserで処理した結果をまとめてみる

Last updated at Posted at 2016-09-28

php-mime-mail-parserで手持ちのメーラーから送信したメールを処理した結果をまとめます。

環境・前提条件

受信側

  • PHP 7.0.11
  • php-mime-mail-parser 2.4.4
  • Postfix 2.10.1
  • aliases設定でメールが来ると処理してtxtに書き出す

送信側

文字色や文字サイズ等のhtml装飾は使用せずデフォルトの設定でメールを作成

  1. SoftbankのiPhoneSE:SMS
  2. SoftbankのiPhoneSE:@i.~からのメール
  3. SoftbankのiPhoneSE(OS:9.3.5):DecoMailer ver.3.6.9(アプリ)
  4. docomoキャリアメール(Android)
  5. gmail(PCから)
  6. 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>&nbsp;</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も入ってくる
  • $htmlhtml,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が書き込まれていく模様です。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5