Hatena::ブログ(Diary)

makotoworldのはてなダイアリー このページをアンテナに追加 RSSフィード Twitter

2007-11-06

メール解析@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となんかできないだろうかと。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/makotoworld/20071106/1194309820