• ベストアンサー

phpでメールを送信

phpでメーラーを起動させずに単純なメール送信をするにはどうしたらよいのでしょうか? mail()を使って問い合わせ用のメールフォームを作りました。フリーホスティングサーバーにアップロードしようとしたところ、そのサーバーはsendmailが使えない仕様になっていました。そのせいでmail()を使用してのメール送信ができません。 私では経験不足なため解決方法がわかりません。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

sendmailが使えない場合、他のメールを送信できるサーバーを利用する必要があります。 yore917さんが利用しているプロバイダなどで、メール機能がついていれば、それを利用することが出来ます。 通常、メールを送信する際に他のサーバーを利用する時、専用のソフトウェアを利用すると思うのですが、そのソフトウェアをPHPで作ることになります。 outlookなどのメールソフトからメールを送信するときは、SMTPというプロトコルを利用してメール用送信用のサーバーにアクセスします。 そして、メール用のヘッダー情報と本文、添付ファイルなどをメール送信用のサーバーに送っています。 さて、PHPで作るには、SMTPでサーバーに接続することになるのですが、PHPですとpearや他の無償で提供されるフレームワークなどに専用のモジュールがあるンじゃ内科と思います。 それを探すのがまず1つの手段としてお勧めです。 私はあまりモジュールを使わないので、fsockopenという予めPHPに用意されている関数を利用します。 実際にfsockopen関数を解説しているページ内に、サンプルとしてsmtpを利用する方法が書かれているので、そちらを参考にしてみてください。 このようにすることで、sendmailを使わずにメールを送信することが出来ると思うので、試してみてください。

参考URL:
http://jp2.php.net/manual/ja/function.fsockopen.php
yore917
質問者

お礼

詳しい情報をありがとうございます!後学のためにfsockopenでやってみようと思ったのですが、プロキシの設定のせいかタイムアウトになり、送信ができませんでした。そこでPEARを調べ、SMTP送信を試したところうまくいきました!ありがとうございました。 返信が遅くなり、申し訳ありませんでした。

yore917
質問者

補足

お礼についての補足です。 >プロキシの設定のせいかタイムアウト これはサーバーにアップロードする前にApacheサーバーで試した結果です。わかりにくく書いてしまって申し訳ありませんでした。

その他の回答 (1)

  • master000
  • ベストアンサー率33% (16/48)
回答No.2

PEARのmailで作るのが簡単です。 SMTPでも送信できますし、マルチパートもあります。

yore917
質問者

お礼

簡単にできました!ありがとうございます! PEARのプログラムよりサーバー側でインストールされていなかったので、設定ファイルの書き換えのほうが時間かかるほど簡単にできました。 返信が遅くなり、申し訳ありませんでした。

関連するQ&A