コードを舐める日々

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

メール解析@PHPその7

メール本文からそれに近いURLを知らせるテスト。

Yahoo!デベロッパーのAPIを利用。
もちろん検索ね。
Yahoo!デベロッパーネットワーク - 検索 - ウェブ検索

しかしうまくいかん。。
なにやら今回はsimplexml関数が認識していない。。

あ、さくらレンサバは元々PHP4やった。
最初に書くコードが悪かったかも。
⇒#!/usr/local/bin/php

PHP5に合わせて書くとこうなる。
⇒#!/home/hogehoge/www/cgi-bin/php5.cgi

成功!
面白ぇ〜!

#!/home/hogehoge/www/cgi-bin/php5.cgi
<?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");
$keyword = mb_convert_encoding(mb_decode_mimeheader($structure->body),
mb_internal_encoding(), "UTF-8");
$data = rawurlencode($keyword);
//----------------------------------------//
// 必要な処理はここで行って下さい
//----------------------------------------//
//yahoo!検索URL
//appid="自分のアプリケーションIDを入れてね"
//&results=1※返ってくる結果を一つに設定
$url = 'http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?appid="自分のアプリケーションIDを入れてね"&results=1&query='.$data;

$xml = simplexml_load_file($url);
foreach($xml->Result as $a){
$y_url = $a->Url;
}


//メール返信
$to = $from;
$title = "URLマッチングサービス";
$from = "From: demo@hoge.com";
$body = "".$keyword."」は下記のURLが一番関連深いでしょう。\n".$y_url;
mb_internal_encoding("UTF-8");
mb_language("japanese");
mb_send_mail($to, $title, $body, $from);
?>


しかしなんか変だ。
英語はばっちりだが、日本語がマッチングしない。。
その辺りが怪しい。。

$kw = mb_convert_encoding(mb_decode_mimeheader($structure->body),
mb_internal_encoding(), "UTF-8");
$data = rawurlencode($kw);

また改良してみよう。