アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは よく携帯サイトで空メールシステムを見かけます 私も会員制の掲示板を作っていますが アドレスを打ち間違えて 登録する人がたくさんいます。 そこで 空メールを送信してもらいメールが届いたら .forwordでphpへ送り 定型文の後ろに取得したアドレス例)"http://xxxx/touroku.php?M=R&S=1?メールアドレス"
をつけて返信できるようなのを考えています。  わかりづらい質問で恐縮ですが どなかた力を貸してください。

A 回答 (5件)

"| exec hoge.php"のようにすれば?



自分もLinuxでやってみましたが、"| hoge.php"はできなかったです。C言語でSTDINからの入力を./test.txtに保存する「mailsave」プログラムを作って
"| ./mailsave"
使ってみてもだめだったですけど

"| exec ./mailsave"
のようにできました。

この回答への補足

ごめんなさい  意味がわかりません

補足日時:2007/08/24 20:35
    • good
    • 0
この回答へのお礼

何とか空メール送信できるようになったけど携帯から送信してもメールが帰ってこないのはなぜなのでしょう?

お礼日時:2007/08/26 17:58

そうですか・・・何か設定があったような気もしますが


すぐにでてこないのでとりあえず
メールがトリガーにならないのであれば、メールボックスにためておいて
imap系の関数でメールを読み取る設定をして、cronで定期的に
処理をすることになるでしょう。

http://www.php.net/manual/ja/ref.imap.php

この回答への補足

.forwordにこうやって記述したら
"|cat > /home/hvn/test.txt"

test.txt にちゃんと書き込まれていました。
メールがトリガーになっているのは確認できました
でも "|/home/hvn/hoge.php"にするとダメみたいです

hoge.phpの記述の問題でしょうか?

補足日時:2007/08/25 15:18
    • good
    • 0

とりあえずコツコツやってください。



まずは、
.forwardに
"|cat > test.txt"

として、メールがトリガーになるかどうか確認するあたりから・・・。
そのあとは自分のホームディレクトリにhoge.shをおいて
"|hoge.sh"
として
#!/bin/sh

echo "test" > "test.txt"

など、メールがスクリプトが動くことを確認します。

あとはphpのスクリプトが動くかどうか確認するなど、とにかく
やってみてみるしかないです

この回答への補足

.forwardに
"|cat > test.txt"

として、メールがトリガーになるかどうか確認するあたりから・・・。

試してみました どうもメールがトリガーにならないみたいです。

初心者の私に いろいろアドバイスありがとう 感謝しています

補足日時:2007/08/23 17:21
    • good
    • 0
この回答へのお礼

.forwordに
"| /usr/local/bin/php /home/アカウント/hoge.php"

hoge.phpで
#!/usr/local/bin/php

<?php
// main
{
$stdin = fopen("php://stdin", "r");
if (!$stdin) {
exit();
}
$email = "";
while ($line = fgets($stdin)) {
$line = trim($line);
// メールヘッダ部が終了したらループ終了
if (!$line || $email){
break;
}
// 送信元メールアドレスの取得
if (eregi("^from:", $line)){
$email = getEmail($line);
}
}
// メールアドレスが取得できなければ終了。(getEmailに問題アリ)

if (!$email){
exit();
}
autoMail($email);
}

function autoMail($email)
{
// ここで空メールを送信元に対して送信します。
// 送信プログラムは省略します。
mail("$email", "登録はココから", "ここから登録して下さい\nhttp://url;");

}

function getEmail($line)
{
if (eregi("(.*)\<(.*)\>", $line, $tmp)){
$from = $tmp[2];
}
return strtolower(trim($from));
}
?>
で何とか空メール送信ができるようになりました。

でもパソコンから空メールを打つとOKなのですが携帯から空メールを打ってもメールが送られてこないです なぜでしょうか??
初心者の私でもここまでがんばれたのは皆さんのおかげです^^

お礼日時:2007/08/25 23:16

.forwardと同じフォルダ上に、自分でつくってください。


そのhoge.phpに
#!/usr/local/php/bin/php -f
<?PHP
$data=fopen("php://stdin", "r");
print $data;
?>
と書いて保存してください。

もちろん今回はスクリプトで動かすので、hoge.phpに実行属性が必要です。

この質問内容を解決するにはおそらく新たにたくさんのことを覚える
必要があるので、自分である程度しらべようという向上心がないなら
手を出さないほうがよいと思いますよ。

http://www.google.co.jp/search?q=.forward+%E8%87 …

この回答への補足

いろんなところを見て自分なりに調べていますが どうしてもできません やっぱり初心者には無理なのでしょうか・・

hoge.phpに
#!/usr/local/bin/php -q
<?php
// main
{
$stdin = fopen("php://stdin", "r");
if (!$stdin) {
exit();
}
$email = "";
while ($line = fgets($stdin)) {
$line = trim($line);
// メールヘッダ部が終了したらループ終了
if (!$line || $email){
break;
}
// 送信元メールアドレスの取得
if (eregi("^from:", $line)){
$email = getEmail($line);
}
}
// メールアドレスが取得できなければ終了。(getEmailに問題アリ)

if (!$email){
exit();
}
autoMail($email);
}

function autoMail($email)
{
// ここで空メールを送信元に対して送信します。
// 送信プログラムは省略します。

}

function getEmail($line)
{
if (eregi("(.*)\<(.*)\>", $line, $tmp)){
$from = $tmp[2];
}
return strtolower(trim($from));
}
?>

と書いてもCommand died with status 127: "hoge.php". Command
output: sh: line 1: hoge.php: command not found
になります

補足日時:2007/08/23 12:12
    • good
    • 0

.forwardやalisasでプログラムに流します。



たとえば.forwardなら
"| hoge.php"
とするれば渡せます。

プログラム側では標準入力を以下のようにとります

#!/usr/local/php/bin/php -f
<?PHP
$data=fopen("php://stdin", "r");
?>

この回答への補足

hoge.php って何処にあるんですか?

Command died with status 127: "hoge.php". Command
output: sh: line 1: hoge.php: command not found

空メール送信したら こんなのがでました

補足日時:2007/08/22 18:26
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!