Xserverにおいてaaa@xxx.comに届いたメール内容をPEARの「mimeDecode.php」を使用してDBに登録する仕組みを作りたいのですがうまくいきません。

Xserverのメール振り分け機能でaaa@xxx.comにメールが届いた場合に/home/xxx/mail.phpを起動し動作するまではうまくいきましたが、「mimeDecode.php」を読み込むと動作しなくなります。

動作テストでまずはaaa@xxx.comにメールが届くと/home/xxx/mail.phpが起動しbbb@xxx.comにメールを送信するようにしました。

↓↓↓ココカラ↓↓↓

<?php
mb_send_mail("bbb@xxx.com", "title", "honbun", "from");
?>

↑↑↑ココマデ↑↑↑

と上記の場合は正常に動作する(bbb@xxx.comにメールが送信される)のですが...

※文字数オーバーで入りきらないためコメント欄に続きます※

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/04/22 11:30:28
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Bombastus No.2

回答回数409ベストアンサー獲得回数52

ポイント100pt
pear install Mail_Mime

は実行されていますよね?


あとは、require_onceする前に以下のようにしてみてください。

$path = '実際にPEARがインストールされているディレクトリパス';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
id:gelgelgel

あっ!!できました!! 

今までできなかったのが嘘のようです。

メール内容の取り込みもできました。

ご回答ありがとうございました。

↓以下ソースを見てもあまりピンと来ないのですが結局のところ何が原因だったのでしょうか?

http://php.net/manual/ja/function.set-include-path.php

簡単に教えて頂けたら嬉しいです。

2010/04/22 10:25:10

その他の回答1件)

id:koriki-kozou No.1

回答回数480ベストアンサー獲得回数79

ポイント20pt

動かない理由はmimeDecode.php が存在しないからのようですね

XServerでPEARを使用する。

http://d.hatena.ne.jp/revolutionary/20090306/p1

>どうやら「Mail/mimeDecode.php」がない

>サポートに問い合わせてみると以下のような回答が返ってきた。

>PEARに関しましては、一部ライブラリは未導入となっておりますため必要なものがございましたら、お客様にてアップロードしていただく必要がございます。



PEARのセットアップ方法など対応方法は下記に詳しく書いておられます

XServerにPEARをインストールする。

http://d.hatena.ne.jp/revolutionary/20090309/p1

id:gelgelgel

ご回答ありがとうございます

説明不足ですみませんが「mimeDecode.php」については自分でインストール済みです。

>/home/xxx/mail.phpにブラウザから直接アクセスすると、エラーも表示されずbbb@xxx.comにメールが送信されるので

>「mimeDecode.php」が読み込めていないというわけではありません。

もしインストールがうまく行っていないときは「Warning: require_once(Mail/mimeDecode.php..」といった

エラーが表示されるのでそちらは問題ないと思います。

念のためご指摘の方法で再度インストールし試みたのですがやはりうまくいきませんでした。

他に心当たりがありましたら宜しくお願い致します。

2010/04/22 07:03:29
id:Bombastus No.2

回答回数409ベストアンサー獲得回数52ここでベストアンサー

ポイント100pt
pear install Mail_Mime

は実行されていますよね?


あとは、require_onceする前に以下のようにしてみてください。

$path = '実際にPEARがインストールされているディレクトリパス';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
id:gelgelgel

あっ!!できました!! 

今までできなかったのが嘘のようです。

メール内容の取り込みもできました。

ご回答ありがとうございました。

↓以下ソースを見てもあまりピンと来ないのですが結局のところ何が原因だったのでしょうか?

http://php.net/manual/ja/function.set-include-path.php

簡単に教えて頂けたら嬉しいです。

2010/04/22 10:25:10
  • id:gelgelgel
    ※質問の続きです※

    ↓↓↓ココカラ↓↓↓

    <?php
    require_once("Mail/mimeDecode.php");

    $source = file_get_contents("php://stdin");

    $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");

    mb_send_mail("bbb@xxx.com", "title", "honbun", "from");
    ?>

    ↑↑↑ココマデ↑↑↑

    とすると動作しなくなります。ちなみに以下でも動作しません。

    ↓↓↓ココカラ↓↓↓

    <?php
    require_once("Mail/mimeDecode.php");

    mb_send_mail("bbb@xxx.com", "title", "honbun", "from");
    ?>

    ↑↑↑ココマデ↑↑↑

    /home/xxx/mail.phpにブラウザから直接アクセスすると、エラーも表示されずbbb@xxx.comにメールが送信されるので「mimeDecode.php」が読み込めていないというわけではありません。

    何が原因かも検討がつきませんのでご教授頂ければ嬉しく思います。

    ▼参考
    http://www.xserver.ne.jp/man_mail_sorting.php
    http://d.hatena.ne.jp/revolutionary/20090312/p1
  • id:koriki-kozou
    koriki-kozou 2010/04/22 10:38:38
    >結局のところ何が原因だったのでしょうか?

    include_path の設定が正しくなかったということ
    回答1であれば2つ目のページ内の「6.パスを指定する。」の箇所

    set_include_path は php内から一時的にパスを変更する方法

    どちらの方法でも動けばよいでしょう
  • id:Bombastus
    > 結局のところ何が原因だったのでしょうか?
    PEARへのパスが通っていなかったことが原因で、PEARパッケージを完全にインストールできていない可能性があります。
    php.iniの編集ができるのであれば、include_pathにPEARへのパスを追加しておいてください。

    他の方に勝手にコメントされるとやりずらいですね・・・
  • id:koriki-kozou
    koriki-kozou 2010/04/22 16:00:05
    >再度インストールし試みたのですがやはりうまくいきませんでした
    上記部分にも絡んでくるのでコメントしたまでです

    >他の方に勝手にコメントされるとやりずらいですね・・・
    はてなの仕組み上、平行したりすることはある程度しかたないです


  • id:gelgelgel
    Bombastusさん、koriki-kozouさん

    補足のご回答ありがとうございました。

    include_pathの設定がうまくいかなかったのであれば、/home/xxx/mail.phpに
    ブラウザにアクセスした時点で「Warning: require_once(Mail/mimeDecode.php..」というメッセージが
    表示されると思うのですが、今回のようにメールからプログラムを呼び出すような場合はinclude_pathの
    設定が変更されるという事なのでしょうか。

    いずれにせよちゃんと動くようになって大変感謝しております。

    ありがとうございました!!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません