質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

5782閲覧

php7での仕様変更?

swallowtail

総合スコア60

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

3クリップ

投稿2017/07/09 14:24

先日このサイトでお聞きしたことの派生なのですが、メールをトリガーとしてphpを起動させるという方法についてお教えください。
メールをトリガーとしてphpを起動させる方法については当サイトで先日お教えいただいた方法で行けたのですが、その時には
環境がさくらインターネットのphp5.4バージョンでした。これをphp7系にしたところ、メールエラーで「554 5.3.0 unknown mailer error 255」が返ってくるようになりました。php5系とphp7系で.mailfilterなどの記述方法が変わったのでしょうか?
記述しているスクリプトは以下の通りです。

階層情報 home └ huga ├ www │ └ test.php │ └ MailBox └ info └ .mailfilter

php

1.mailfilter 2パーミッション:600 3 4to "| /home/huga/www/test.php"

php

1test.php 2パーミッション:744 3 4#!/usr/local/bin/php -q 5<?php 6// PEARパッケージライブラリの読み込み 7require_once("/home/huga/www/pear/PEAR/Mail.php"); 8require_once("/home/huga/www/pear/PEAR/Mail/mimeDecode.php"); 9 10function getmail($line){ 11 if(eregi("(.*)\<(.*)\>", $line, $tmp)){ 12 $from = $tmp[2]; 13 } 14 return strtolower(trim($from)); 15} 16 17mb_internal_encoding("UTF-8"); 18 19$stdin = fopen("php://stdin", "r"); 20$email = ""; 21 22while ($line = fgets($stdin)){ 23 $line = trim($line); 24 if (!$line || $email){ 25 break; 26 } 27 if (eregi("^from:", $line) || eregi("^Return-Path:", $line)){ 28 $email = getmail($line); 29 } 30} 31 32$to = $email; 33$subject = "テストメール"; 34$body = "メールアドレス:". $email; 35$headers = 'From: info@huga.sakura.ne.jp'. "\r\n". 'Reply-To: info@huga.sakura.ne.jp' . "\r\n". 'X-Mailer: PHP/'. phpversion(); 36 37mail( 38 $to, 39 mb_encode_mimeheader($subject, 'ISO-2022-JP-MS'), 40 mb_convert_encoding($body, 'ISO-2022-JP-MS'), 41 mb_convert_encoding($headers, 'ISO-2022-JP-MS'), 42 "Content-Type: text/html; charset=\"ISO-2022-JP\";\n" 43); 44?>

この記述でphp7系だとエラーメールが返ってくるのですが、これをphp5系にすると期待した動作(空メールを送信したアドレスが本文に記載されたメールが返ってくる)になります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

.mailfilterはmaildropというメール配送プログラムの機能であり、PHPとは独立したものなので、PHPのバージョンにより仕様が変わるということはあり得ません。
スクリプトをざっと見たところ、eregi という関数を使っていますね。これはPHP7では削除されたものなので、PHP7で動かすとエラーになる(動かない)と思います。まずは、当該のスクリプトが意図通り動くか、コマンドラインから試してみたらどうでしょうか?

投稿2017/07/10 00:57

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swallowtail

2017/07/18 00:18

返信が遅くなり申し訳ありません。 7では廃止されていたとは知りませんでした。 ご指摘有り難う御座いました。
guest

0

ベストアンサー

動作未確認ですが以下のような感じでどうでしょうか。

require_once("/home/huga/www/pear/PEAR/Mail.php"); require_once("/home/huga/www/pear/PEAR/Mail/mimeDecode.php"); $params['include_bodies'] = true; $params['decode_bodies'] = true; $params['decode_headers'] = true; $params['input'] = file_get_contents("php://stdin"); $params['crlf'] = "\r\n"; $structure = Mail_mimeDecode::decode($params); # 送信者のメールアドレスを抽出 $to= $structure->headers['from']; $subject = "テストメール"; $body = "メールアドレス:". $to; $headers = 'From: info@huga.sakura.ne.jp'. "\r\n". 'Reply-To: info@huga.sakura.ne.jp' . "\r\n". 'X-Mailer: PHP/'. phpversion(); mail( $to, mb_encode_mimeheader($subject, 'ISO-2022-JP-MS'), mb_convert_encoding($body, 'ISO-2022-JP-MS'), mb_convert_encoding($headers, 'ISO-2022-JP-MS'), "Content-Type: text/html; charset=\"ISO-2022-JP\";\n" );

投稿2017/07/10 02:21

編集2017/07/10 02:23
mayoi_maimai

総合スコア1583

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swallowtail

2017/07/18 00:20

scriptを書いてくださり有難うございます。質問をしてからまだ自宅に戻れてないので試すことができませんが、戻り次第参考にさせていただきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問