- ベストアンサー
phpでメールを送信
phpでメーラーを起動させずに単純なメール送信をするにはどうしたらよいのでしょうか? mail()を使って問い合わせ用のメールフォームを作りました。フリーホスティングサーバーにアップロードしようとしたところ、そのサーバーはsendmailが使えない仕様になっていました。そのせいでmail()を使用してのメール送信ができません。 私では経験不足なため解決方法がわかりません。よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
sendmailが使えない場合、他のメールを送信できるサーバーを利用する必要があります。 yore917さんが利用しているプロバイダなどで、メール機能がついていれば、それを利用することが出来ます。 通常、メールを送信する際に他のサーバーを利用する時、専用のソフトウェアを利用すると思うのですが、そのソフトウェアをPHPで作ることになります。 outlookなどのメールソフトからメールを送信するときは、SMTPというプロトコルを利用してメール用送信用のサーバーにアクセスします。 そして、メール用のヘッダー情報と本文、添付ファイルなどをメール送信用のサーバーに送っています。 さて、PHPで作るには、SMTPでサーバーに接続することになるのですが、PHPですとpearや他の無償で提供されるフレームワークなどに専用のモジュールがあるンじゃ内科と思います。 それを探すのがまず1つの手段としてお勧めです。 私はあまりモジュールを使わないので、fsockopenという予めPHPに用意されている関数を利用します。 実際にfsockopen関数を解説しているページ内に、サンプルとしてsmtpを利用する方法が書かれているので、そちらを参考にしてみてください。 このようにすることで、sendmailを使わずにメールを送信することが出来ると思うので、試してみてください。
その他の回答 (1)
- master000
- ベストアンサー率33% (16/48)
PEARのmailで作るのが簡単です。 SMTPでも送信できますし、マルチパートもあります。
お礼
簡単にできました!ありがとうございます! PEARのプログラムよりサーバー側でインストールされていなかったので、設定ファイルの書き換えのほうが時間かかるほど簡単にできました。 返信が遅くなり、申し訳ありませんでした。
お礼
詳しい情報をありがとうございます!後学のためにfsockopenでやってみようと思ったのですが、プロキシの設定のせいかタイムアウトになり、送信ができませんでした。そこでPEARを調べ、SMTP送信を試したところうまくいきました!ありがとうございました。 返信が遅くなり、申し訳ありませんでした。
補足
お礼についての補足です。 >プロキシの設定のせいかタイムアウト これはサーバーにアップロードする前にApacheサーバーで試した結果です。わかりにくく書いてしまって申し訳ありませんでした。