LoginSignup
2
0

More than 5 years have passed since last update.

PHPでメール受信してヘッダー情報をゴリゴリ成型したい

Last updated at Posted at 2017-08-22

PHPでstdinしたメールヘッダー情報を成型

<?php
//PEARライブラリの読み込み
require_once("Mail.php");
require_once("mimeDecode.php");

//言語設定、文字コード設定
mb_language("Japanese");
mb_internal_encoding("UTF-8");

//標準入力
$stdin = file_get_contents("php://stdin");

$stdinにメールヘッダー情報をぶち込んでいるわけですがPEARのMail.phpmimeDecode.phpなどのライブラリを利用して【件名】、【メール送信者】、【メール本文】、【添付ファイル】などの情報を抽出してそれをデータベースに登録したいのだけど、データベースへ登録した時に文字化けするわ、本文が空のまま登録されるわ(ここ重要!)、デバイス(メーラー)によって文字化けするヶ所が違うわで、もう訳わからん状態になってます。

8/25追記

<?php
//PEARライブラリを使用して成型する為の準備
$params['include_bodies'] = true;
$params['decode_bodies']  = true;
$params['decode_headers'] = true;
//標準入力でヘッダー情報を$paramsへ代入
$params['input'] = file_get_contents("php://stdin");
$params['crlf'] = "\r\n";
//mimeDecodeクラスを使って$structureへ成型後の値を代入
$structure = Mail_mimeDecode::decode($params);

/* 中略 */

//各変数の中身をテキストデータとして吐き出し
//予定としてはmimeDecodeクラスで成型した値が入る(けど、両方0バイト!)
file_put_contents("structure.txt", $structure);
file_put_contents("part.txt", $part);

//各種データがテキストファイルで吐き出される
file_put_contents("params.txt", $params['input']);
file_put_contents("subject.txt", $subject);
file_put_contents("mail.txt", $mail);
file_put_contents("body.txt", $m_body);

$paramsの各キーへPEARのライブラリを使用して成型してるわけですが、これの扱い方がいまいち解らない。解るところもあるけどもライブラリを2つ使用していることでどの値がどの変数のどのキーに入っているのかが理解できてない。$structurefile_put_contentsで内容を吐き出すようにコードを書いているのだが$structure$partの中身は空になるという。

オブジェクト指向がまだ全然理解出来てないのでそこがネックになっている気はするが解決策が解らない状態。$structureがオブジェクトだからテキストで吐き出せないのかな?$partはスコープがforeach内だけだから参照できないのかな?という感じです。

この問題は解決しなければ先に進めないので重点的にしていきます。

PEARライブラリのMail.phpの中身をある程度理解しないと成型できない気がするのでこっちの中身も少し見てどういった返り値が来てるのか、調べてみたいと思います。

2
0
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
2
0