コードを舐める日々

わからないことがわからないことをしる日々

メール解析@PHPその6

.mailfilterのパーミッションを600にしてみた。
しかし不具合が。。
改めて.mailfilterの内容をチェック。
最後に改行で1行あけて保存してみるとエラー内容が変わった。
なんか、メールを受け渡すプログラムに問題があるようだ。
あちゃ、mimeDecode.phpの位置を認識できていないみたいだ。
修正し、成功!
なぜだろ。。改行の関連がまだ理解できていない汗

併せてPEARのMail_mimeDecodeの使い方を理解するために
返ってくる内容をコントロールしてみる。
送るメール本文に自分の名前を入れると「あなたの名前は"入力した本文内容"ですか?」と
返ってくるコード書けた。
些細な感動!!
そのコードメモ。

#!/usr/local/bin/php
<?php

//PEARのライブラリ読み込み※ライブラリの位置に注意
require_once("../pear/PEAR/Mail/mimeDecode.php");      // PEAR MimeDecode

//メールソースを標準入力から読み込み
$source = file_get_contents("php://stdin");
if(!$source) {
    exit();    // 読み込み失敗
}

//メール解析
$params['include_bodies'] = true;
$params['decode_bodies'] = true;
$params['decode_headers'] = true;
$decoder = new Mail_mimeDecode($source);
$structure = $decoder->decode($params);
$from = mb_convert_encoding(mb_decode_mimeheader($structure->headers['from']),
mb_internal_encoding(), "auto");
$body = mb_convert_encoding(mb_decode_mimeheader($structure->body),
mb_internal_encoding(), "UTF-8");

//----------------------------------------//
// 必要な処理はここで
//----------------------------------------//


//メール返信
$to = $from;
$title = "メールテスト";
$from = "From: demo@hoge.com";
$body = "あなたの名前は".$body."ですか?";
mb_internal_encoding("UTF-8");
mb_language("japanese");
mb_send_mail($to, $title, $body, $from);
?>

次のチャレンジははその本文内容をwebAPIとなんかできないだろうかと。