[PHP-users 32991] Re: メール転送をphpに転送

Norio Suzuki suzuki @ tricorn.co.jp
2007年 12月 7日 (金) 18:35:56 JST


鈴木です。

# すみません。プログラムの中身はあまり追っていません。


> そこで、空メールシステムを構築したく色々と試行錯誤をしておりますが
> なかなか成功に至りません。

何がどう成功していない(= 失敗している)のかを書いた方が答えを得られる
と思いますよ。


> サーバー側の設定で受信メールをPHPのプログラムに転送することが出来ます。

この部分は、正しく動くことが担保されているのでしょうか?

そうでない場合は、問題の切り分けとして、例えばこんなテキストファイル
(testmail.txtとします)を作ってみます。
------------------------------------------------------------------------
To: hoge @ example.com
From: fuga @ example.jp
Subject: test mail

This is a test mail.
------------------------------------------------------------------------

このテキストファイルをそのプログラムへパイプで渡した場合に、どのような
動きになるかを検証してみてください。

$ cat testmail.txt | そのプログラム

これでメール送信できていれば、受信メールを転送する部分の問題、送信がで
きていなければ、PHP プログラム側の問題となるのではないでしょうか?


> メール転送する時のパスはこのようにパイプでプログラムに渡しています。
> | /home/**ID***/ **ドメイン****/public_html/***.php

ところで、こういったプログラムを public_html 以下に置く意味はありますか?

public_html が公開ディレクトリだとしたら、外部からメール送信プログラム
にアクセスできてしまいませんか?

パイプで使うようなプログラムは、その必要がなければ公開ディレクトリには
置かない方が安全かと思います。



At Fri, 7 Dec 2007 17:41:42 +0900,
miyuki sakamoto wrote:
> 
> こんにちは。
> いつも、参考にさせて頂いています。
> 
> もし、経験のあるかたご教授願いたいのですが
> サーバー側の設定で受信メールをPHPのプログラムに転送することが出来ます。
> 
> そこで、空メールシステムを構築したく色々と試行錯誤をしておりますが
> なかなか成功に至りません。
> 環境は下記のようになっています。
> 
> OS Linux
> Apache 2.0.52
> PHP4.3.9 ( セキュリティパッチ適用済 ) CGI版
> sendmail
> 
> メール転送する時のパスはこのようにパイプでプログラムに渡しています。
> | /home/**ID***/ **ドメイン****/public_html/***.php
> 
> PHPがCGI版なので、PHPファイル1行目に
> #!/usr/bin/php
> を付けても外してもダメでした。
> 
> ***.php ファイル内のスクリプト
> PEARを利用しメールヘッダーからアドレスを読み取っています。
> phpinfoでinclude_pathは
> .:/usr/share/pear
> となっています。
> 
> よろしくお願いします。
> 
> <?php
> require_once ("Mail/mimeDecode.php");
> f(($stdin=fopen("php://stdin","r"))==true){
> 	while(!feof($stdin)){
> 	$str.=fread($stdin,4096);
> 	}
> 	fclose($stdin);
> 
> 	$decoder = new Mail_mimeDecode($str);
> 	$params['include_bodies'] = false;
> 	$params['decode_bodies'] = false;
> 	$params['decode_headers'] = true;
> 	$structure =$decoder->decode($params);
> 
> 	$item['subject']
> =mb_convert_encoding(mb_decode_mimeheader($structure->headers['subject']),mb
> _internal_encoding(),"auto");
> 	$item['to']
> =mb_convert_encoding(mb_decode_mimeheader($structure->headers['from']),mb_in
> ternal_encoding(),"auto");
> 	$item['from']
> =mb_convert_encoding(mb_decode_mimeheader($structure->headers['to']),mb_inte
> rnal_encoding(),"auto");
> 
> }
> $to = $item['to'];
> $subject = "ご登録有り難う";
> $body ="ご登録有り難う。本文" ;
> $from = $item['from'];
> sendmail($to, $subject, $body, $from);
> ?>
> 
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
> 

;; ---------------------------------------------------------
;; 鈴木則夫 <suzuki @ tricorn.co.jp>
;; トライコーン株式会社 http://www.tricorn.co.jp/
;; 160-0015 東京都新宿区大京町24 住友外苑ビル5F
;; Tel 03-5919-0041 Fax 03-5919-0042


PHP-users メーリングリストの案内