こんにちは。今、PHP5.3で、携帯からの空メールを処理するプログラムを作っています。
具体的には、空メールが携帯から送られてくると、エイリアスでPHPプログラムに渡し、送信者に自動返信するというプログラムです。
現在、以下のようなプログラムを作っていますが、うまく動きません。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
<?php
require_once("/opt/lampp/lib/php/PEAR.php");
// PEAR::Mailライブラリ
require_once("/opt/lampp/lib/php/Mail.php");
// PEAR::Mail_mimeライブラリ
require_once("/opt/lampp/lib/php/Mail/mimeDecode.php");
$params['include_bodies'] = false;
$params['decode_bodies'] = false;
$params['decode_headers'] = true;
$params['input'] = file_get_contents("php://stdin");
$params['crlf'] = "\r\n";
//メールを解析する
$structure = Mail_mimeDecode::decode($params);
print_r($structure);
//送信元を取得する
$mail = $structure->headers['from'];
$mail = addslashes($mail);
$mail = str_replace('"','',$mail);
preg_match("/<.*>/", $mail,$str);
if($str[0]!=""){
$str=substr($str[0],1,strlen($str[0])-2);
}$mail = $str;
//送信データを設定する
$recipients = $mail;
$new_from = 'register@7ws.jp';
$subject = 'empty mail OK!';
$body ='登録が完了しました。';
$headers = "From:".$new_from;
//メールを送信する
$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);
?>
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
参考にしたのは、http://www.phppro.jp/phptips/archives/vol35/1
と「PHP×携帯サイト デベロッパーズバイブル」です。
プログラムを実行しても、空メールの送信者のアドレスが取得できず、
送り先を空白のまま、メールを送信していまい、エラーとなります。
正常に送信者アドレスを取る方法をご存知の方が、いらっしゃいましたら、ご教授お願いします。
なお、$structure = Mail_mimeDecode::decode($params);の下で、
print_r($structure);を実行したところ、
print_r($structure);
(
[headers] => Array
(
[] =>
)
[ctype_primary] => text
[ctype_secondary] => plain
)
という表示なっていました。headersがArrayなのに空っぽなところに、
問題があるのではないかと思います。以上、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
エイリアスの書き方に問題があるのではないでしょうか。
php://stdin から何も受け取れていないようです。
この回答への補足
ご回答、ありがとうございます。
エイリアスの書き方の問題を切り分けるため、コマンドラインにて、
/opt/lampp/bin/php /opt/lampp/htdocs/****/****/empty_mail_v2.php < test_mail
という具合に、test_mailというファイルを用意して、実行しておりますが、
やっぱりうまくいきません。なお、test_mailファイルは、/var/spool/mailに入っていた、メールの実データをアドレスだけ変えて使用しています。
なにか、他に原因があるのでしょうか?
以上、よろしくお願いいたします。
いままで、インターネットからメールを送れなかった関係で、
telnet localhost 25
で擬似的なメールセッションをおこなっていました。
その際、mail from:やrcpt to:は指定していたのですが、
Dataコマンドの後の、ヘッダFromやヘッダToをつけていませんでした。
この結果を元に、送信されたメールデータを、test_mailファイルとして
使用していたため、うまくいきませんでした。
ヘッダToやヘッダFromをつけたらうまくいきました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php 完了画面の送信メールのコードを書いているのですが・・・ 2 2023/06/02 12:01
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- PHP Content-Typeが機能していない? 2 2022/07/17 11:10
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- 英語 この"e-mail"が複数形でもなく、無冠詞なのはなぜですか? 「表現のための実践ロイヤル英文法」に 1 2022/07/10 16:12
- Gmail 家から自分のg-mailで添付ファイル付きのメールを4通、職場の自分宛てに送りました。次の日に見ると 3 2022/09/08 12:35
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Outlook(アウトルック) Outlookのメール送信を取り消す方法 1 2022/11/17 13:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mb_send_mailを実行するとエラ...
-
mb_send_mailでのメール送信が...
-
Mb_Send_mailで文字化け
-
PHPsendmailにて送信元を変更
-
メールフォームのタイトルが文...
-
POP Before SMTPでメールを送信...
-
ローカル環境でのメール送信
-
メールの本文が取得できない
-
onedrive にexcelファイルをア...
-
VBSの「MsgBox」について
-
こちらはただの直列処理ですか?
-
複数ファイルを連続でダウンロード
-
パースエラーとは?
-
リンク先を隠す方法はないでし...
-
拡張子php画像をjpg画像等に変...
-
図に示す階層構造で,現在のデ...
-
C# Excelファイルへの画像挿入。
-
PHPとCSVで簡易データベースな...
-
Subversionで、ファイルをリネ...
-
ワードプレス、Contact Form 7...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php 完了画面の送信メールのコ...
-
さくらサーバーにて、phpからメ...
-
メールフォームのタイトルが文...
-
PHPsendmailにて送信元を変更
-
mb_send_mail関数が利用出来ない
-
PHPからロリポップ!のメールサ...
-
VBA 添付ファイルをつけてメー...
-
mailやmb_send_mail関数で、本...
-
sendmailでエラーがでます
-
PHPでの仮登録時の会員認証メー...
-
phpでメール送信できません 原...
-
mb_send_mail() 第 4、5 引数の...
-
PHPMailerのコードエラーが解決...
-
ローカル環境でのメール送信
-
PHPからメールを送る@さくらイ...
-
PHPでメールを送信するには
-
mb_send_mailについて
-
mail関数を使った場合のReturn-...
-
メールの本文をSmartyにしたい
-
サーバーによってはmb_send_mai...
おすすめ情報