LINUX7.0でPHP4を使っているんですが、プログラムからHTMLメールを送れません。何かいい方法はありませんでしょうか?
mail()関数でも/usr/sbin/sendmailからでもいいのですが、ヘッダ部分がうまく付けることができていないようです。どなたか教えてください。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

なるほど。

Multipart だったんですね。
私はまた、mail 関数の使い方がわからないのかと、勘違いしました。
申し訳ありません。

で、回答ですが、私は IT Boost 様のスクリプトを使用させていただいております。

PHP -> メールの項にサンプルがあります。
php の mail でもできますが、車輪の再発明もどうかな?と思いましたので、使用させていただいております。

が、マルチバイト文字列関数が使用できることが前提となっているようですので、現時点のバージョンでは難しいかなと。もちろん、jstring などのモジュールをコンパイルされているのであれば、その限りではないかと思います。

また、php4.0.6 を使用していますが、特に不都合など無く、アップデートしてみてはいかがでしょうか。
# というより、あげたほうがいいと思います。
# 便利ですよ。:-)

参考URL:http://www.itboost.co.jp/
    • good
    • 0
この回答へのお礼

ありがとうございます。
教えていただいたサイトも見てみましたが、かなり勉強になりました。
とりあえずバージョンアップしてみることにします。
どうもありがとうございました。

お礼日時:2001/10/24 18:21

ヘッダ部分というのはどういったものでしょうか?


Return-Path? それとも Content-type でしょうか?

mail 関数でも、第三引数を指定すれば追加ヘッダを指定できるはずです。

また、php 4.0.6 以上で、適切にコンパイルされているのであれば、mb_send_mail という関数が使用できるはずです。
この関数であれば、エンコードまでしてくれると思います。

この回答への補足

i18nコンバートっていうのができなかったんで第三引数で
"From: xxxx@xxxxxxxxx\nContent-Type: multipart/alternative; boundary=\"THIS_LINE_IS_BOUNDARY\"
とContent-typeを指定した上で、本文部分では
$body = <<<EOF
--THIS_LINE_IS_BOUNDARY
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit

$honbun(HTML本文)

--THIS_LINE_IS_BOUNDARY
Content-Type: text/html; charset="iso-2022-jp"
Content-Transfer-Encoding: quoted-printable

$honbun
EOF;
と指定しました。かなり適当なつくりになっちゃいましたが、こんなんでいいんでしょうか。
本文中にはスタイルシートとテーブルとかが入ってるんですが、スタイルシートで指定したテーブルのスタイルが反映されませんでした。
なんかもっとスマートなやり方があると思うんですけど・・・。
php4.01なんでmb_send_mailってのも使えないみたいです。
php4.06に替えることを考えたほうがいいですかねぇ

補足日時:2001/10/24 10:11
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q嵐4人でT.A.B.O.OのPV??

櫻井さんに秘密で4人でT.A.B.O.OのPVを作ったと聞きました。

このことについて知っている方は、出来るだけ詳しく教えて下さい!

Aベストアンサー

昨日のオーラスのコンサートで流れていました。櫻井くんのサプライズ誕生日の催しで4人が作ったらしいです(^^)
ギャグみたいな感じのプロモでした(^^)


ちなみにその後
相葉くん、二宮くん、大野くんはミニスカポリスでステージに出てきました。松本くんは普通の男性警官の服でした。


参考までに。

Q#!/usr/local/bin/phpはどこに書くのですか?

phpでWebページを作っています。
レンタルサーバーのマニュアルに「PHPで記述したCGIスクリプトの1行目に #!/usr/bin/phpまたは #!/usr/local/bin/phpと記述して下さい。
」とありますが、hoge.phpの「<?php ~ ?>」の「<?php」の次の行に書くのでしょうか?それとも前の行に書くのでしょうか?
また、hoge.phpの中身が「<html><head></head><body> ~ <?php ~ ?> ~ </body></html>」の場合はどこに記述するのでしょうか?

初心者的な質問ですみませんが、よろしくお願いします。

Aベストアンサー

>1行目に書いたら、この「#!/usr/bin/php」という記述がブラウザに表示されてしまいました。
ということなら#!/usr/bin/phpの記述そのものが不要ということですね
phpをcgiとして動かすときに必要ということでしょうか
hoge.phpをhoge.cgiのファイル名で実行する場合その1行目に#!/usr/bin/phpが必要になります。
cgiの場合は実行権や改行コードに注意が必要となります。

QP3XeonとP4の比較

P3Xeon-1GHzとP4-1.5GHzってどっちのCPUが良いのでしょうか?P4の方が速いんだろうけど、P3の方がなんか安心して使えそうなのかなぁって思うのですが・・・

具体的に言うとIBMのINTELLISTATION Z PRO(6866-69J)ってやつとINTELLISTATION M PRO(6849-23J)ってやつのどっちか迷っているのです。FireGL2搭載マシンなんですけど、値段はどっちも同じなんですよ。細かく見ると6866-69J(P3)の方が拡張性が高いようなのですが、自分はバリバリ拡張する訳ではないのでどうでも良いし。安定度はP4よりP3-Xeonの方が高いのでしょうか?

双方のメリット、デメリットを教えて下さい。

Aベストアンサー

どういう使い方をするかだと思います。
そもそも使用目的が違うと思います。
現状で使える普通のソフトを動かすだけなら、P3の方が早いらしいですよ。SSE(SSE2)に対応したソフトを利用するとP4の方が効率が良いとか。
あくまでもベンチマークの数字ですけど。
画像処理とか、音楽、VIDEO編集のような使い方なら将来的にもP4の方が良いような・・・?
P4は2GHz程度が出てくる(来年末?)まで待っても良いんじゃないかと言う話も聞いたことがあります。
どちらにしても、目的次第だと思います。
ベンチマークなら最近の雑誌にいろいろ載っていますよ。

Q#!/usr/local/bin/php

XAMPPで自宅サーバー勉強中です、
レンタルサーバーの時はPHPファイルの1行目に
#!/usr/local/bin/php
と記入し拡張子をabc.cgiとしていました、
自宅サーバーの場合の1行目と拡張子はどのように
書くのですか、よろしくお願いします。

Aベストアンサー

phpは、本来
#!/usr/local/bin/php
という記載は不要です。

拡張子を abc.cgi から abc.php とすれば、1行目がなくても動きます。

仮に
#!/usr/local/bin/php
を入れたままにすると、自宅サーバーでは動くが、レンタルサーバーでは
動かない、という事が起こり得ますので、やめるのが得策です。

QLGA775/P4用マザーにCeleronを。

現在、メインPCに使っているのがintel D915GAのP4用マザボなのですが、CPUを今つけてるP4からCeleronDに付け替えて転用したいと思っています。for the intel P4 と表記されててもFSB533対応のマザボならCeleronは使用できるんでしょうか?

Aベストアンサー

回答No.1にあるD915GAVとD915GAGの製品情報の各ページのページの下のほうにある「技術情報(英語)」をクリックし、その次のページにある「Supported Processors」をクリックすると、サポートするプロセッサの一覧が表示されます。

Intel Desktop Board D915GAV - Supported Processors
http://developer.intel.com/design/motherbd/av/av_proc.htm

Intel Desktop Board D915GAG - Supported Processors
http://developer.intel.com/design/motherbd/ag/ag_proc.htm

この中にCeleron Dが記載されています。

Q/usr/local/lib/phpとはどういう意味ですか?

include_pathを設定して、どのディレクトリからも用意にphpをインクルードできるようにしたいのですが、.htaccessへの書き方やパスの書き方があまりにもわからないので質問させていただきました。

PHPの勉強を始めたのは最近で、私の知っているパスはこれだけ。
1 http://~から始まる絶対URI?パス?
2 ./ とか ../ などの相対パス。
の2つだけ。

include_pathについて、検索エンジンで調べるとほとんどのサイトで次のように書いてありまして、私にはよく分かりません。

php_value include_path ".:/usr/local/lib/php"

まず、include_pathの書き方はこのようで良いというのはわかりましたが、/ から始まっているので、httpなくていいの?..なのか.なのかどっちなのかもわからない、初めて目にしたもので……。

PHPの勉強をしていると、よく/から始まるURLをみるのですが、これについて説明しているところが見当たらず、当り前の知識のような感じなのでしょうか?

これらについて、教えてください。

include_pathを設定して、どのディレクトリからも用意にphpをインクルードできるようにしたいのですが、.htaccessへの書き方やパスの書き方があまりにもわからないので質問させていただきました。

PHPの勉強を始めたのは最近で、私の知っているパスはこれだけ。
1 http://~から始まる絶対URI?パス?
2 ./ とか ../ などの相対パス。
の2つだけ。

include_pathについて、検索エンジンで調べるとほとんどのサイトで次のように書いてありまして、私にはよく分かりません。

php_value include_path...続きを読む

Aベストアンサー

たくさん説明どころがあって悩ましいですね。(笑

まず、ご自分でもなんとなく気づいている感じですが、
URLとパスは別のものだと考えてしまった方がよいと思います。

URLはインターネット上の場所を示します。
パスというときは一般に、そのマシン内にあるファイルやディレクトリの場所を示します。

次に絶対と相対の違いについて。
絶対URLや絶対パスは、省略なしで場所を示すことをいいます。
相対URLや相対パスは、現在の自分の場所から相対的に場所を示すことをいいます。

URLならば、http://で始まっていると、省略なしの絶対URLになります。
パスの場合、/から始まっていると、省略なしの絶対パスになります。

相対についてはパスの場合だけ説明してみましょう。
まず、動かしたいPHPのスクリプトが/home/sample/test.phpにあるとしましょう。
このとき、/home/sample/hoge/以下にあるphpファイルをインクルードするためには、
以下のように記述すればよいはずです。

php_value include_path "hoge"

これがスクリプトの位置から見た相対パス指定です。

相対パスの書き方にはいくつか特殊なものがあって、
自分がいるディレクトリを示すときには「.」もしくは「./」、
自分がいるディレクトリの親ディレクトリを示すときには「..」もしくは「../」
と書くことになっています。

上記のスクリプトの例でいうと、「..」は/homeディレクトリを指すことになります。

あと、Linux系の設定では、複数のパスを同時に指定する場合に、
「:」で区切る場合が多いので、include_pathでも同様なのだと思います。

たくさん説明どころがあって悩ましいですね。(笑

まず、ご自分でもなんとなく気づいている感じですが、
URLとパスは別のものだと考えてしまった方がよいと思います。

URLはインターネット上の場所を示します。
パスというときは一般に、そのマシン内にあるファイルやディレクトリの場所を示します。

次に絶対と相対の違いについて。
絶対URLや絶対パスは、省略なしで場所を示すことをいいます。
相対URLや相対パスは、現在の自分の場所から相対的に場所を示すことをいいます。

URLならば、http:/...続きを読む

QWINDOWSフォルダのsp.dllファイル

 WINDOWSフォルダのsp.dllファイルを誤って消去してしまいました。
OSはMEを使ってます。OS起動時に次のようなメッセージが出ます。

「C:¥WINDOWS¥sp.dllを取り込めません。ファイルを開こうとして
 エラーが発生しました。ディスクまたはファイルシステムのエラーです」

 これが原因なのかはわからないのですが、最近JAVAの勉強をはじめて、JAVA
をインストールしたところ、JAVA、TEXT、HTMLのファイルの拡張子が思ったとおりにいきません。コンパイルはできるがプログラムの実行がなぜかできない、という状況でとりあえず、一つ一つトラブルを解決していこうと思い、質問させて
いただきました。

1)sp.dllファイルを復活させるにはどうしたらよいのでしょうか?
2)sp.dllファイルはどうゆう役目をしているのでしょうか?
3)sp.dllファイルを友達のWINDOWSフォルダからコピーしてもってくれば
  OSはもとに戻ってくれるのでしょうか?

どなたか、解決の糸口となる情報、知識をお持ちの方、回答よろしくお願いします。その他の機能は概ね良好です。パソコンは自作(友達から)です。

 WINDOWSフォルダのsp.dllファイルを誤って消去してしまいました。
OSはMEを使ってます。OS起動時に次のようなメッセージが出ます。

「C:¥WINDOWS¥sp.dllを取り込めません。ファイルを開こうとして
 エラーが発生しました。ディスクまたはファイルシステムのエラーです」

 これが原因なのかはわからないのですが、最近JAVAの勉強をはじめて、JAVA
をインストールしたところ、JAVA、TEXT、HTMLのファイルの拡張子が思ったとおりにいきません。コンパイルはできるがプログラムの実行がなぜかできない...続きを読む

Aベストアンサー

システムの復元についてはまず、参考URL「システムの復元について」を見てください。

次に「2001 年 9 月 8 日よりも後の復元ポイントが利用できない 」
http://www.microsoft.com/japan/support/kb/articles/JP290/7/00.htm

これはアップデートしたら解決する問題なので、アップデートサイトで確認できます。
http://windowsupdate.microsoft.com/

で、システムの復元の手順ですが、「スタート」→「プログラム」→「アクセサリ」→「システムツール」
とたどると、システムの復元があります。

「コンピューターを以前の状態に戻す」を選んで、次へ、異常がある前の日付のチェックポイント
指定してください。

もしうまくいかなかった場合、復元後に限りシステムの復元を元に戻す機能があったと思います。

参考URL:http://www.microsoft.com/JAPAN/support/kb/articles/JP267/9/51.HTM

システムの復元についてはまず、参考URL「システムの復元について」を見てください。

次に「2001 年 9 月 8 日よりも後の復元ポイントが利用できない 」
http://www.microsoft.com/japan/support/kb/articles/JP290/7/00.htm

これはアップデートしたら解決する問題なので、アップデートサイトで確認できます。
http://windowsupdate.microsoft.com/

で、システムの復元の手順ですが、「スタート」→「プログラム」→「アクセサリ」→「システムツール」
とたどると、システムの復元があります。

「コ...続きを読む

Q/usr/local/binへのパス追加

PHP、もしくはLinuxの質問をさせていただきます。

ソースからPHPをインストールした場合、
またはpearコマンドでライブラリをインストールした場合など、
php、phpize、phingなどのコマンドのエイリアスが/usr/local/binに作成されたりされなかったりしている気がしています。
複数の環境でインストールを実行しているので、環境要因かもしれません。
これらは、何らかの設定でエイリアスが作成されたりされなかったりするものなのでしょうか?

OSはCentOS5です。

Aベストアンサー

configure オプションを適切に設定しないと、デフォルトで振舞われちゃうので環境で差がでちゃうのかも。

configure --help でオプションを確認して必要なものを設定してみてはどうでしょう?

それ以外の理由は解らないのですが、出来上がった Makefile を確認してみてはどうでしょうか?

Qvodafone【P4(2)型およびW型】について

【P4(2)型およびW型のみ】の機能を使用しようと思いますが、

http://www.dp.j-phone.com/dp/tech_svc/info/

を見ても、【P4型】としか記述されておりません。

P4(1)型とP4(2)型の見分け方がわかる方、そういう一覧のURLをご存知の方、
また、$_SERVER["HTTP_USER_AGENT"]を出力してどこかの部分を見るとわかるなどの
情報をお持ちの方、教えていただけませんか?

Aベストアンサー

Developers Siteの、ツール&ダウンロード>ウェブ>技術資料>概要編(PDF)の「1.2. サービス世代」に載っています。

それによれば、P4(1)とP4(2)ではブラウザバージョンが異なり、P4(1)は4.0 or 4.1、P4(2)は4.2となっています。
Vodafoneのユーザーエージェントは「J-PHONE/ブラウザバージョン/機種名~」となっているので、これを使って判別できるでしょう。
※ユーザーエージェントの構成は、HTTP編(PDF)の「3.15.31. User-Agent」に載っています。

参考URL:http://www.dp.j-phone.com/dp/tool_dl/web/tech.php

Qmb_send_mail sendmailについて

PHPが使える無料レンタルサーバーで会員管理画面を作ろうとしているものです。だいぶ完成してきて、残りは登録した人に会員登録したことをメールで自動送信することができるようになれば完成というところまできました。無料レンタルサーバーの利用についての説明の中ではsendmailは利用可となっています。私はメール送信のプログラムを作ったことがないので、しきりに本を読みながら悪戦苦闘しております。本の中のサンプルを参考に下のようなソースを書いて、テストしていますがダメでした。
$mailto="*****@***.biglobe.ne.jp";
$mailsbj="新規登録";
$mailbody="登録者ができました";
$mailheader="From:****@yahoo.co.jp\nReply-To:*****@***.biglobe.ne.jp\nX-Mailer:phpversion();"
mb_language("ja");
if(mb_send_mail($mailto,$mailsbj,$mailbody,$mailheader)){
echo "メールの送信に成功";
}
else{
echo "メール送信失敗";
}


利用している無料レンタルサーバ内のsendmailの説明の中には
sendmailのパス:/usr/lib/sendmail
と記入されています。

web上で色々調べてみましたが、どうも今一よくわかりませんでした。mb_send_mailは使えないと言うことでしょうか?
もし、sendmailを使用してメール送信をする場合にはどんなソースを書けばよいのでしょうか。
どなたかご指導宜しくお願いいたします。

PHPが使える無料レンタルサーバーで会員管理画面を作ろうとしているものです。だいぶ完成してきて、残りは登録した人に会員登録したことをメールで自動送信することができるようになれば完成というところまできました。無料レンタルサーバーの利用についての説明の中ではsendmailは利用可となっています。私はメール送信のプログラムを作ったことがないので、しきりに本を読みながら悪戦苦闘しております。本の中のサンプルを参考に下のようなソースを書いて、テストしていますがダメでした。
$mailto="*****@***...続きを読む

Aベストアンサー

>> エラー表示がでてこないのでどこでエラーになっているのか、分からない状態です。

厄介なレンタルサーバですね。
perlでsendmailができるならphpからのメールも許可されているはずですので、単純なプログラムのミスが原因だとは思いますが、エラー表示が一切出ないとすると単純なタイプミスさえ原因を追う手段が無くなるのでityounomiさんのおっしゃるとおり諦めるしかないかな。

ただ分からないのが・・
>> テストしていますがダメでした。
エラーも表示されないのにどうしてPHPではダメと判断できたのでしょう。
せめて、元の質問内のスクリプトの結果に何が表示されたのか("メールの送信に成功" or "メール送信失敗" または他の表示)くらいは開示しておくともっと頼りになる人から回答が得られたかもしれませんね。

>> 調べてみたらphpにはsendmailという関数はないのですね

PHPでのメール関数としては、mail()やmb_send_mail()だけですが、
sendmailのパスが分かっているのならシステムコマンドのsendmailをphpから以下ように直接操作する手段も有ります。
$to="*****@***.biglobe.ne.jp";
$body="hogehoge"; //ここにヘッダー込みで本文を書く
SendEmail($to,$body);
function SendEmail($to,$body){
 $mp = popen("usr/lib/sendmail ${to}", "w");
 fputs($mp, $body);
 pclose($mp);
}
他にソケットを使ってメールを送る方法も有りますが、少々敷居が高いです。興味が有ったら検索してみれば例がいっぱい見つかります。

お力になれずに済みませんでした。特殊な設定のサーバを利用しているようなのでレンタル先のサポートに聞くしかなさそうです。
では!

>> エラー表示がでてこないのでどこでエラーになっているのか、分からない状態です。

厄介なレンタルサーバですね。
perlでsendmailができるならphpからのメールも許可されているはずですので、単純なプログラムのミスが原因だとは思いますが、エラー表示が一切出ないとすると単純なタイプミスさえ原因を追う手段が無くなるのでityounomiさんのおっしゃるとおり諦めるしかないかな。

ただ分からないのが・・
>> テストしていますがダメでした。
エラーも表示されないのにどうしてPHPではダメと判断できた...続きを読む


人気Q&Aランキング