PHPでメール読込方法についての質問

このQ&Aのポイント
  • PHPで受信したメールを読み込みする方法について質問しています。
  • 参考にしているサイトで必要なファイルやインストール方法についてわからない部分があります。
  • 質問内容が専門的ではないため、詳しい説明や示し方を教えていただきたいです。
回答を見る
  • ベストアンサー

PHPでメール読込・・・

いつも親切丁寧にありがとうございます。 PHPで受信したメールを読み込みしようとしています。 メールをパイプ出来る事がわかったのですが、紹介しているサイトの説明で1点わからない部分があります。 1 # mimeDecode.php が必要 (以下2行でインストール) 2 # # pear install -f PEAR-1.6.0 3 # # pear install Mail_Mime 参考にしているサイト(http://spinnen.jp/keitaip.htm)←無断掲載すいません。 mimeDecode.phpはゲットしましたが、2と3の【インストール】の意味がわかりません。 サーバーは【さくらインターネット】のレンタルサーバーを使用しています。 ここで言う【インストール】とは何をすれば良いのでしょうか? PHP.iniへの記載とかそんな事を示すのでしょうか? それではいつも質問がおおざっぱですが、なにぶん専門用語の知識が少ないのでご了承ください。 よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

そのドメインは失効しているようですね。失礼しました http://pear.php.net/go-pear <=を go-pear.php と言う名前で保存し さくらインターネットのサーバーに アスキーモードでアップロードしてください

yu_ray2007
質問者

お礼

umasikajiroさんありがとうございます。 >>そのドメインは失効しているようですね。失礼しました いえいえ。ヒントをいただき検索しましたらほとんどが同じ説明で、ソースかソフトなのか書かれている方がいませんでしたので、『何を?』と疑問になってしまいました。 あとは手順に従ってやってみたいと思います。 ありがとうございました。

その他の回答 (1)

回答No.1

さくらインターネットでの pearの使い方が http://zenryokuhp.com/server/sakura_pear.htm に詳しく書かれています。

yu_ray2007
質問者

お礼

早々ありがとうございます。 サイト読みましたが親切なのか不親切なのか・・・・ >>http://go-pear.orgから、go-pear.phpをダウンロードする go-pear.phpは何処にもない。肝心な所の説明が薄いのでgo-pear.orgで検索してみました。 が・・・・http://go-pear.orgを名前をgo-pear.phpに変えて保存する・・・何を・・・ その他の部分は分かり易そうなのですが、肝心な所がわからずgo-pear.phpをゲット出来ていません。 どこにあるんでしょうか? わかるようであれば教えてください。

関連するQ&A

  • PHP5での空メールが実行されない

    現在PHP5を利用して携帯の空メールを実装しており、3日ほどトライし続けておりますが、携帯側にエラーが返信される所で先に進めずにいます(;;)プログラムは勉強し始めて4ヶ月程度の未熟者です。どなたか是非ご教授頂ければと思います。よろしくお願いします!! ちなみに、pearは使えているのを、他のライブラリで確認しました。 【使用言語とライブラリ】 PHP5、pearの『Mail.php』『mimeDecode.php』 【参考書籍】 PHP携帯 デベロッパーズバイブル 【利用サーバー】 Xサーバー 【メールの振り分け設定】 『条件』あて先が ○○○@△△.com を一致する 『処理方法』 | /home/サーバーID/ドメイン/public_html/フォルダ名/フォルダ名/empty_mail.php へ 転送する 【PHPのソース】 #!/usr/bin/php5 <?php //PEAR::Mailライブラリ ini_set('include_path', '/home/サーバーID/ドメイン/public_html/pear/PEAR'); require_once 'Mail/Mail.php'; //PEAR::Mail_mimeライブラリ ini_set('include_path', '/home/サーバーID/ドメイン/public_html/pear/PEAR'); require_once 'Mail/mimeDecode.php'; //メールソースを読み込む $source = file_get_contents("php://stdin","r"); if(!$source){ exit("標準入力に失敗"); } //メールを解析する $decoder = new Mail_mimeDecode($source); $structure = $decoder->decode($params); //送信元を取得する $from = $structure -> headers['from']; $from = mb_decode_mimeheader($from); $from = mb_convert_encoding($from, mb_internal_encoding(),'auto'); if(preg_match( '/<(.*?)>$/' , $from , $match)){ $from = $match[1]; } $from = trim($from); $from = strtolower($from); //送信データを設定する $recipients = $from; $new_from = ○○○@△△.com'; $subject = 'empty mail ok!'; $body = '(仮)こんにちわ'; //メールを送信する $headers = array(); $headers['From'] = $new_from; $headers['To'] = $recipients; $headers['Subject'] = $subject; $headers['Sender'] = $new_from; $mail = Mail::factory('sendmail'); $result = $mail->send($recipients, $headers, $body); ini_set('log_errors', '1'); ini_set('error_log', 'エラーです'); 【エラー内容(すごく長いですが…)】 This is the Postfix program at host sv225.xserver.jp. I'm sorry to have to inform you that your message could not be delivered to one or more recipients. It's attached below. For further assistance, please send mail to <postmaster> If you do so, please include this problem report. You can delete your own text from the attached returned message. The Postfix program <○○○@△△.com>: Command died with status 255: "/usr/bin/maildrop". Command output: PHP Warning: require_once(/home/サーバーID/ドメイン名/public_html/pear/PEAR/Mail/Mail.php) [<a href='function.require-once'>function.require-once</a>]: failed to open stream: No such file or directory in /home/サーバーID/ドメイン名/public_html/mobile_search/gotempty_mail2.php on line 7 PHP Fatal error: require_once() [<a href='function.require'>function.require</a>]: Failed opening required '/home/サーバーID/ドメイン名/public_html/pear/PEAR/Mail/Mail.php' (include_path='home/サーバーID/ドメイン名/public_html/pear/PEAR') in /home/サーバーID/ドメイン名/public_html/mobile_search/gotempty_mail2.php on line 7 X-Powered-By: PHP/5.1.6_ Content-type: text/html_ _ とても煩雑でごめんなさい(;;) どうかよろしくお願いします。

    • ベストアンサー
    • PHP
  • phpでmail()関数以外のやり方について

    PHPでmailを複数配信するのですが、 マニュアルサイト http://jp.php.net/manual/ja/ref.mail.php でmail()関数 を見ると 『mail() 関数は、大量のメールをループ内で送信するには 向いていないことに注意しましょう。』 とあります。 そして PEAR::Mail http://pear.php.net/package/Mail や PEAR::Mail_Queue http://pear.php.net/package/Mail_Mime を続けて紹介しているのですが ここからは英語なのでサッパリわかりません。 どなたかご教授願えませんか

    • ベストアンサー
    • PHP
  • OSXでのPHPのPEARの使い方

    MacPortsを使ってapache2とphp5をインストールしてphpをしていたのですが、PEARを使おうと思ってもうまく動きません。 まず、php.iniがなぜか入っていないことに気づき、自分で作っていろいろなフォルダに入れてみたのですが、PATHが通らないのですが、どこのフォルダに入れるのが正しいのでしょうか? また、PEARのモジュールたちはどこに入れるのが正しいのでしょうか? 一度、とにかく動かしてみようと思い、適当なところにPEARモジュールを置き、絶対PATHで書いてみてPEARを使おうと思ったのですが、PEARの中のPATHが通ってないみたいでエラーになります。。。これもphp.iniがちゃんとしていない(?)せいなのでしょうか? ちなみに先月にプログラミングを始めてまずPHPの基本的な動作がわかってきたというレベルです。 インストールは下記のサイトを参考にしました。 http://mitaimon.cocolog-nifty.com/blog/2007/04/mac_osxtigerphp_c1d4.html

    • ベストアンサー
    • PHP
  • PEARのパッケージmail_mimeのインストールについて

    初めて質問させていただきます。 色々検索をしましたがわからなかったのでよろしくお願いいたします。 さくらのレンタルサーバー(スタンダード)を使用しております。 PHP Version 5.2.5でPRAEを使用するためインストールをしました。 パッケージのMail_Mimeを使用するためインストール(pear install mail_mime) をしたら下記エラーが出て失敗していまいます。 %pear install mail_mime pear/Mail_Mime requires PEAR Installer (version >= 1.6.0), installed version is 1.5.4 pear/Mail_mimeDecode requires PEAR Installer (version >= 1.6.0), installed versi on is 1.5.4 pear/Mail_mimeDecode requires package "pear/Mail_Mime" (version >= 1.4.0, exclud ed versions: 1.4.0) No valid packages found install failed PEARのバージョンが古いのかと思いバージョンを調べました(下記)が PEARが1.6.2なので1.6.0よりもバージョンが新しいので 何がエラー要因かわかりません。 %pear list INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET: ========================================= PACKAGE VERSION STATE Archive_Tar 1.3.2 stable Auth 1.5.4 stable Auth_HTTP 2.1.6 stable Config 1.10.11 stable Console_Getopt 1.2.3 stable DB 1.7.13 stable HTTP_Request 1.4.2 stable MDB2 2.4.1 stable Mail 1.1.14 stable Net_SMTP 1.2.10 stable Net_Socket 1.0.8 stable Net_URL 1.0.15 stable PEAR 1.6.2 stable Pager 2.4.4 stable Structures_Graph 1.0.2 stable XML_Parser 1.2.8 stable XML_Serializer 0.18.0 beta XML_Util 1.1.4 stable ちなみに %pear config-show CONFIGURATION (CHANNEL PEAR.PHP.NET): ===================================== Auto-discover new Channels auto_discover <not set> Default Channel default_channel pear.php.net HTTP Proxy Server Address http_proxy <not set> PEAR server [DEPRECATED] master_server pear.php.net Default Channel Mirror preferred_mirror pear.php.net Remote Configuration File remote_config <not set> PEAR executables directory bin_dir /home/アカウント名/pear/bin PEAR documentation directory doc_dir /home/アカウント名/pear/docs PHP extension directory ext_dir /home/アカウント名/pear/ext PEAR directory php_dir /home/アカウント名/pear/php PEAR Installer cache directory cache_dir /home/アカウント名/pear/cache PEAR data directory data_dir /home/アカウント名/pear/data PEAR Installer download download_dir /home/アカウント名/pear/temp directory PHP CLI/CGI binary php_bin /usr/local/php-4.4.7/bin/php php.ini location php_ini <not set> PEAR Installer temp directory temp_dir /home/アカウント名/pear/temp PEAR test directory test_dir /home/アカウント名/pear/tests Cache TimeToLive cache_ttl 3600 Preferred Package State preferred_state stable Unix file mask umask 22 Debug Log Level verbose 1 PEAR password (for password <not set> maintainers) Signature Handling Program sig_bin /usr/local/bin/gpg Signature Key Directory sig_keydir /usr/local/php-4.4.7/etc/pearkey Signature Key Id sig_keyid <not set> Package Signature Type sig_type gpg PEAR username (for username <not set> maintainers) User Configuration File Filename /home/アカウント名/.pearrc System Configuration File Filename /usr/local/php-4.4.7/etc/pear.conf どなたかご教授願えないでしょうか? よろしくお願いいたします

    • 締切済み
    • PHP
  • PEARのmimeDecodeでメール解析をしたい

    レンタルサーバにPEARをインストールし、 mimeDecode.phpを使って、メールを解析したいのですが、 上手くいきません。 下記のサイトを参考にしましたが、やはりできませんでした。 http://d.hatena.ne.jp/makotoworld/20071106/1194309820 http://www.abe-tatsuya.com/web_prog/php/mail2php.php メールを分解するファイル(.php)では、 file_get_contents("php://stdin")のようなカタチで、 メール情報はキャッチできています(確認済みです)が、 それを、 $params['include_bodies'] = true; $params['decode_bodies'] = true; $params['decode_headers'] = true; $params['input'] = file_get_contents("php://stdin"); // 標準入力 $params['crlf'] = "\r\n"; $mail_data = Mail_mimeDecode::decode($params); #-- 本文の取得 $MailBody = $mail_data->body; $MailBody = mb_convert_encoding($MailBody,"UTF-8","JIS"); としても、取り出せないのです。 (つまり、$MailBody は空っぽのままなのです。) さらに、 #-- From フィールドの取得 $FromAddress = $mail_data->headers['from']; #-- To フィールドの取得 $ToAddress = $mail_data->headers['to']; としている部分では、error_reportingが、 Notice: Undefined index: from in~~ Notice: Undefined index: to in~~ と、エラーを吐いています。 これも謎です…。一体、どういうことになっているんでしょうね?!汗 ・パスの書き方に誤りがあり、 正常にPEARにアクセス(利用)できていない? ・そもそも、インストールが怪しい? ・上記の、参考にした2サイトでは、 mimeDecode.phpの扱い方が違うのですが、この違いとは? これは、PEARのバージョンの新旧の問題? だとすると、今となっては、 どちらか一方しか使えない、もしくは、両方とも使えない? つまり、サイトを参考にして書いたコードがそもそも古くて使い物にならない? ・ファイルのパーミッションの問題?(保存形式はEUCとしています) 以上の点が、気になっています。 この事態を打開するためには、どう切り分けながら改善していったらよろしいでしょうか。 どなたかお詳しい方、どうか教えて下さい。 なお、 FFFTPにより、PEARのファイル群が置かれていることは確認しています。 (mimeDecode.phpもあります。) コードの冒頭は、 #!/usr/local/bin/php <?php error_reporting(E_ALL); としています。 レンタルサーバは、さくらインターネットのスタンダードプランです。 PHPバージョンは、5.2.14。 PEARは、最近、http://pear.php.net/go-pear経由でインストールしました。 長くなりましたが、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHPのライブラリPEARを使わせる場合

    レンタルサーバのユーザにPHPのライブラリPEARを使わせる場合、 サーバ側(サーバ管理者)が全てのPEARを用意して、インクルードしてやっておかないといけませんか? CentOS5.6(私がサーバを提供する側) PHP5.3.3 というのも、 php.iniの include_pathが include_path = .:/usr/share/pear:/usr/share/php  になっておりサーバ管理者である私が/usr/share/pearにはまだPEARパッケージを1つも入れていません。 そこでPEARパッケージを使いたいユーザ自身がFTPでphp等アップロードしたディレクトリに 使いたいPEARパッケージを独自で配置し、ユーザ自身が配置したPEARパッケージを読み込んで使う形でもいいのでしょうか? ユーザがどんなパッケージを必要とするか分からないので、こちらがあらかじめ準備してやるなら、 すべてのパッケージを/usr/share/pearにインストールしておいてやらないといけなくなるのでは? と思います。 レンタルサーバなど通常はどうやっているんでしょうか?ユーザ各々にアップさせるものですか?

    • ベストアンサー
    • PHP
  • mimeDecode.phpのキー名について

    mimeDecode.phpを使って分解して受信メールをパースしています。 一部のメールで画像が保存出来なく困っていますので、mimeDecode.phpのキーについて、わかる方いましたら教えてください。 目的 携帯メールを自動受信して添付された画像を保存(表示)する。 環境 サーバー    さくらインターネット PHPバージョン  4.49 テスト環境   Windows XP pro メールソフト  ベッキー 携帯端末    DoCoMo P905i SoftBank 822SH au W61SH mimeDecode.php 仕様とバージョン * @category Mail * @package Mail_Mime * @author Richard Heyes <richard@phpguru.org> * @author George Schlossnagle <george@omniti.com> * @author Cipriano Groenendal <cipri@php.net> * @author Sean Coates <sean@php.net> * @copyright 2003-2006 PEAR <pear-group@php.net> * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version Release: @package_version@ * @link http://pear.php.net/package/Mail_mime テスト環境では問題なくmimeDecode.phpが動作していたのですが、知人の携帯電話から送信したら画像が保存されませんでした。 解析結果 mimeDecode.phpの内容一部抜粋 switch(strtolower($structure->ctype_primary))---------------(1) { case "text": $mail_body = $structure->body; break; case "multipart": $kk=0 ; foreach($structure->parts as $part) { switch(strtolower($part->ctype_primary))--------(2) { case "text": // テキスト $mail_body = $part->body; break; } //ここはテスト用でswitchの外に出しています。 // case "image": // 添付あり // case "multipart": // case "video": //添付ファイル名取得 $filename = $structure->parts[$kk]->d_parameters['filename'];-----(3) ..... マルチパート((2)の方です)の時に、(3)が空白になってしまいます。 検索して調べたのですが、記述方法はみんな一緒ですが、結果については触れられていません。 テスト環境では問題なかったので、ヘッダーを調べたら『Content-Disposition』が無い事がわかり・・・ http://okwave.jp/qa4359390.html・・・質問してみました。・・・・解決しませんでした。 そこで、無い知恵を絞りmimeDecode.phpから受け渡された変数(?)を解析した所・・・・ foreach ($structure->parts as $tmp) { $jjj=0; $body.= $jjjj."\n"; $jjjj=$jjjj+1; foreach ($tmp as $tmp1) { $body.= $jjj."--".$tmp1."--[".count($tmp1)."]--tmp1[]\n"; $body.= $jjj."--".array_shift($tmp1)."--tmp[shift]\n"; $body.= "\n"; $jjj=$jjj+1; } $structure->partsの中にファイル名と画像データを確認する事が出来ました。 (1(jjjj)の38(jjj)のarray_shift($tmp1)にファイル名、1(jjjj)の4(jjj)の$tmp1に画像データ) しかし・・・キー名がわからないので直接取り出す事が出来ません。 $structure->parts[$kk]->d_parameters['filename']のように記述したいのですが、mimeDecode.phpの詳細が書かれている所が無いので困っています。 ちょっと質問の説明がヘタで申し訳ありませんが、詳しく書いているサイトや、上記についてわかる人がいましたら教えてください。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • phpのpearは、どうなったの?

    php pear をインストールしたいので、あちこちサイトを見ましたが、pear.php.net が本家みたいですが、http://pear.php.net に繋がりません。別のサイトになります。 どこにいったのでしょうか?

    • ベストアンサー
    • PHP
  • php.iniって。。

    超初心者です。 phpでメール送信をしようと本を片手に奮闘しておりますが、基本的なことがよくわかりません。 プロバイダはぷららで、ロリポップでレンタルしているサーバー上のサイトからぷららのアドレスに送信したいです。 php.iniでSMTPの設定を、など書いてあるのですが、php.iniとは、サーバー上にUPするものなのでしょうか? ロリポップのphpは4.3.11だと書いてあるのですが、そのphp4.3.11と、php.iniとは違うものなのでしょうか?  そしてメールサーバーは、ぷらら、ロリポップ、どちらのを設定すればよいのでしょうか? 基本的すぎて本にも書いてありません。 すみませんが、どなたか教えてください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • PEAR の Mail/Queue.php で文字化け。

    タイトル通り、文字化けが解消できません。 いつも他の事は全てUTF-8 でやっているのですが メールは [ISO-2022-JP] を使わないといけないみたいですね。 PEAR を使わないで [mb_send_mail] を使っていた時は何もトラブルは無かったのですが。 以下、長いですが宜しくお願いいたします。 CENTOS 5 Mysql 5.0.45 MySQL の文字セット: UTF-8 Unicode (utf8) PHP 5.0 PEAR 以下の通りで運用しています。 DB 1.7.13 stable Mail 1.1.14 stable Mail_Mime 1.5.2 stable Mail_Queue 1.2.2 stable Mail_mimeDecode 1.5.0 stable PEAR 1.4.9 stable メールを複数人に送る為に [Mail/Queue.php] を 利用しようとしています。 (ほぼ、サンプルで公開しているものをそのまま使わせてもらっています。) http://php.atpedia.jp/pear/ja/package.mail.mail-queue.mail-queue.tutorial.html メールを作成するPHPは、[UTF-8] にしています。 メールをデータベースに入れるときに [ISO-2022-JP] に変換しています。 取り出して送信する時にも変換しなくてはいけないのか? 初めてPEARを使うのもあって、動作自体が良く分からない為 文字化けに対処できずにいます。 お分かりになる方、宜しくお願いいたします。 キューに入力前に本文作成用ページ このページは、UTF-8 です。 $subject $message 送信対象のID をこのページから下のページに [POST] で送信 キューに入力用ページ *サンプルを元に <?php mb_language("Ja"); mb_internal_encoding("utf8"); include './config.php'; /* db_options と mail_options をここで使用する */ $mail_queue =& new Mail_Queue($db_options, $mail_options); /*-----PEARでデータベースに接続しているが理解できないので、再度接続。。 ココから---------*/ require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); mysql_query('set character set utf8'); /*----------------------------------データベースに接続 ココまで----------------------------*/ /*----------------------------------この変換のタイミングがおかしいのでしょうか?-----------------*/ $subject = mb_encode_mimeheader($subject,'ISO-2022-JP'); $message = mb_convert_encoding($message,'ISO-2022-JP','UTF-8'); /*----------------------------------ここまで変換-----------------------------*/ $sql = "SELECT * FROM member WHERE **************"; $rst = mysql_query($sql, $con); //件数を数える $recmax = mysql_num_rows($rst); //ループでID、名前、メールアドレスを取り出す while($rows = mysql_fetch_array($rst)){ $id = $rows["customerID"]; $name = $rows["name"]; $mail = $rows["mail"]; $from = '***@*******.net'; $to = $mail; $hdrs = array( 'From' => $from, 'To' => $to, 'Subject' => $subject ); /* 有効なメールを構築するため、Mail_mime() を使用する */ $mime =& new Mail_mime(); //文字コード変換する $mime->setTXTBody($message); $body = $mime->get(); $hdrs = $mime->headers($hdrs); /* メッセージをキューに追加する */ $mail_queue->put( $from, $to, $hdrs, $body ); } $con = mysql_close($con); ?> 送信用ファイル *サンプルそのまま <?php include './config.php'; /* スクリプトがコールされるたびに何通のメールを送信するか */ $max_amount_mails = 50; /* 設定から db_options と mail_options を再び使用する */ $mail_queue =& new Mail_Queue($db_options, $mail_options); /* メッセージを実際に送信する */ $mail_queue->sendMailsInQueue($max_amount_mails); ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう