こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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_ _

とても煩雑でごめんなさい(;;)
どうかよろしくお願いします。

投稿日時 - 2009-07-03 12:00:36

QNo.5094655

困ってます

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

携帯端末以外から送信すると正常に処理され、メールもサーバに残らない状態になるということでしょうか。受信したメールをPHPに流している(転送している)だけなので、いずれにしても元のメッセージは残ると思っていましたが、Xserverでは違うのでしょうか。

携帯端末に送信できない理由は迷惑メール対策が考えられますね、とりあえず送信元の端末の迷惑メール対策の設定を確認してみてください。

投稿日時 - 2009-07-03 18:18:33

お礼

メールサーバーには携帯やPCから送ったメールがそのまま残っているという状態でした。

でも、解決できました!!
すごくうれしいです!!

原因は、転送設定が破壊していました。ためしにmailフォルダの.filterを開いてみたら、いくつか作ったおいた転送用のurlで、空メールを発動するphpファイルに該当するurl(メールアドレス?)だけが何故か文字化けしまくっていました。
きっと僕がその該当フォルダの設定をするときに、すごいスピードで入れなおしたり削除したりを繰り返し過ぎたのだと思います。

迷惑メール対策はこれから取り組んでみたいと思います。
アドバイスありがとうございました(^^)

投稿日時 - 2009-07-03 19:59:33

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

require_once()でのエラーですよね。
ファイル自体がないということはないと思うので、、
インクルードパスの設定に誤りがあるか、ファイル又はディレクトリの権限の設定に誤りがあるかのいずれかではないでしょうか。

投稿日時 - 2009-07-03 12:37:10

補足

アドバイスありがとうございます。
お陰でエラーは消えました。

ただ、今度は携帯から送信したメールが転送されずに、メールサーバーに残ったままになってしまいました。

転送設定がおかしいのかと思い、Xサーバーに問い合わせた所、転送先は
「| /usr/bin/php5 /home/サーバーID/ドメイン名/public_html/フォルダ名/フォルダ名/empty.php 」
が良いとの事なので、そのように再設定したのですが、やはりdocomo、au、softbank全てで、自動返信は元より、転送されずに空メールがメールサーバーに残ったままになってしまいます。なので必然的に携帯には何も返ってきません。

もしヒントがありましたら、ご教授頂きたいと思います(;;)

投稿日時 - 2009-07-03 16:58:56

あなたにオススメの質問