Web サイト、シンプルではありますが、メール スクリプトはプログラマーにとって非常にイライラすることがあります。PHP にはそのスクリプトがあります。 > は mail() の関数 , を呼び出しました。必要なのは受信者のアドレスとレターの本文だけです電子メールを送信するには、しかし、それは mail()である必要があります。これを実行するには、まだいくつかの難しい問題を解決する必要がありますが欲しいです。。mail() が 、 で動作するには、SMTPサーバーは、PHP が接続できるようにします。このサーバーがメール プログラムにとってどれほど重要であっても 、ほとんどの人は、それがどのように機能するのかまったく知りません。このチュートリアルでは、 SMTP の秘密を明らかにし、PHP を使用した電子メール送信に関するいくつかの一般的な問題を解決します。 この記事の他のトピックには、アドレス リストをループし、テキストと HTML 形式の両方で受信者に電子メールを送信する方法が含まれます .
SMTP は、Simple Mail Transfer Protocol、、および 1 つの SMTPA の略称です。サーバーは、このプロトコルを実行し、電子メールを送信するコンピューターです 。このプロトコルの実行とは、実際には Sendmail のようなものを実行することを指します。 および Qmail プログラム -- 以外の を使用している場合Windows コンピュータ. 上の Windowsプラットフォーム、 はWindows NT Service Packの一部として利用可能、またはWindows 2000内部に組み込まれていますSMTP サービス プログラムは、典型的なプログラム です。SMTP パッケージが 、 パッケージだけであると言っているわけではありませんが、これらは最も一般的なものです .Web サイトがインターネット サービス プロバイダーの仮想ホスティング パッケージ ) の部分を使用している場合、 の場合、SMTP サービス プログラムがこのコンピュータにインストールされているはずです.あなたが ISP または屋内、 にあるコンピューターのシステム管理者である場合は、何らかの を持っている可能性が高くなります。 SMTPソフトウェア、は、Webからのリクエストを処理するためにこのコンピュータにインストールされています。サーバーのプロセスメールを送信。
。ただし、あなたが ユーザー で、開発が 1 つだけである場合 Webサービス プログラムはあなたのパーソナル コンピュータで実行されます、あなた自身のマシン では SMTPソフトウェア を実行していない可能性があります。 .これは非常に単純ですが正確な経験則です:Windows の場合、ユーザーはSMTPserver、という単語を見たことがなければ、このプログラムは実行されていません。、 がない場合は、2 つのオプションがあります:インストール、、 を構成し、SMTP サービス プログラム ( を維持する場合)何が起こっているのかわかりません。この方法 ) を使用したり、既存の SMTPサーバー を使用したりすることはお勧めできません。 。
。"如果一个服务器现在没有运行的话,我又怎么使用它呢?"你可能要问.如果你的计算机是通过拨号连接(或是DSL或电缆)连到互联网的话,你可以使用你ISP的外发邮件服务器.例如,如果你开发用的 计算机是一个Windows98的系统并使用56kbps modem通过EarthLink连接到互联网,那么你就可以使用mail.earthlink.net作为你的SMTP服务器.不论你对你的外发邮件服务器使用什么样的邮件客户端(Eudora, Outlook, Netscape Mail等等),它们都将和你的SMTP サーバーを使用する PHP コードのプロセスは、 を使用することと同じです。 🎜>PHPいくつかの事実を知ってください. は
php.ini で管理されています構成ファイル 、 には、mail() 関数が正常に実行できるように設定する必要があるエントリがいくつかあります 。変更する前に、それらの用途を確認してください。を使用できます。 🎜 >phpinfo() 関数は、システムの現在の構成を表示するファイルを作成します 、 このファイルには :phpinfo(
) ?>このファイルを保存、Web サービス プログラムのファイル ルート ディレクトリに配置します 、次に、ブラウザ からアクセスします。美しくフォーマットされたメッセージが表示されます 、 configuration.表示するエントリは次のとおりです:
SMTP
sendmail_from
sendmail_path
Windows を使用していない場合は、 sendmail_path について心配する必要があるのは コマンドだけです。Windows を使用している場合は、を行う必要があります。最後の 2 つの命令 を見てください。
Linux または A を使用している場合Unix バリアント、sendmail_path は のように のようになります:
sendmail_path = /usr/sbin/sendmail
または Qmail:
sendmail_path = /var/qmail/bin/sendmail
このコマンド、では、キュー バッファリング オプションや表示設定を示す構成パラメータを設定することもできますReturn-Path ヘッダー、 は次のとおりです:
sendmail_path = /usr/sbin /sendmail -t -fyou@yourdomain.com
非Windowsユーザー、やるべきことはこれだけです。Windows を使用している場合は、他にもやるべきことがあります . SMTP と sendmail_from. をコマンド名の に置き換えないでください >sendmail は混同されています .Windows では名前を使用していませんが、Sendmail というプログラム、 しかし、それはコマンド の名前にすぎません。 に怖がらないでください .phpinfo(), SMTP と sendmail_from-- これらは空白の 、 であるか、ランダムな値が含まれている です。意味のある値に変更する必要があります の値.
このコンピュータ 🎜> で
SMTPサービス プログラムphp.ini ファイルのエントリは次のようになります:SMTP = localhost
ただし、
、ISP( この例ではは EarthLink) の送信メール サーバー, の場合、php.ini は次のようになります:SMTP = mail.earthlink.netコンピュータはこれら 2 つを区別しないため、ドメイン名の代わりに IP アドレスを使用することもできます、エントリ.
2 番目の設定コマンドは sendmail_from,From ヘッダー の電子メール アドレスに設定する必要があります。スクリプト内で変更できますが、通常は次のように使用されます。デフォルトの .以下はこの構成ディレクティブの例ですyouraddress@yourdomain.comは自分の電子メール アドレスを指します .
sendmail_from = youraddress@yourdomain.com
これらの構成変更を行った後、 Web サービス プログラムを再起動し、phpinfo() を使用します。これらの変更を検証する関数 .これらのタスクが完了したら,、PHP メールを送信しに来ています.
mail() 関数は非常に単純です: にはパラメータが 5 つだけあります、、そのうちの 2 つはオプションです.パラメータは :
受信者アドレス
件名
メッセージ内容
その他のファイルヘッダー( オプション)
SMTPサービス プログラムのその他の構成オプション(オプション)
追加のヘッダー パラメーターは、CC、BCC、Reply-To、 などの電子メール機能を制御します。または、SMTP プロトコル. に従う他の関数 (この例では ,I) From および Reply-To ヘッダー のみを使用します。
私に電子メールを送信したいが、Windows システム 以外を使用している場合は、 プログラムコードは次のようになります:
$to = "julie@thickbook.com";
$subject = "ZDNet 開発者記事";
$msg = "SMTP サーバーについて完全に理解しました!";
$headers = "差出人: me@mycompany.comnReply-宛先: someelse@mycompany.com" ;
$ config = "-fwebmaster@mycompany.com";
mail("$to", "$subject", "$msg", "$ headers", "$ config");
echo "finished!";
?>
に基づくサーバーを使用している場合 WindowsSMTP service, の場合、5 番目のパラメータを使用する必要はありません。 、、および追加ヘッダー情報パラメータ ( は 4 番目のパラメータ )、 それらを区切って、-- を記述する必要があります。n の代わりに rn を使用します。 したがって、、 同じメールが、WindowsSMTP サービスを通じて送信されます。 🎜> コードは次のとおりです:
$to = "julie@thickbook.com";
$subject = "ZDNet 開発者記事";
$
msg = "SMTP サーバーについて完全に理解しました!";$headers = "差出人:
me@mycompany.comrnReply-宛先: someelse@mycompany.com" ;mail ("$to", "$subject", "$
msg", "$headers");echo "finished!";
?> >
スクリプト内の echo ステートメントにより、Web ブラウザーにスクリプトの完了が表示されます。 message.echo ステートメント, を書かないと、出力がないため、"空のファイル" のダイアログ ボックス、 を取得しますブラウザ側に送信できます.
指定されたSMTPサーバーmail () 関数は true 値を返します.しかし、これは電子メールが受信者に正常に届いたことを意味するものではありません .mail() 関数は、SMTPサーバー/ を待機したり、成功を報告したりしません。 エラー コード.
mail() 関数は、偽の値、 を返し、警告を表示する場合があります"接続できません 、 (行 x" または "不明なエラー、 行 x。" の場合これら 2 つのメッセージのいずれかが 、 と表示される場合は、php.ini >SMTP を確認する必要があります。 🎜> value.これらのメッセージが発生する可能性は 2 つあります: SMTPサーバーがダウンしています、 または PHP は . に接続できません。どちらの場合でも、メールは送信できません、.
このスクリプトは、これらのパラメータ にハードコードされた値を使用します。 は、単純な HTML フォームを使用します 、これらのパラメータにいくつかの値を挿入すると、優れたフィードバック フォームを作成できます。
1回あなたは 1 人にメールを送信する方法を知っています 、 同じメールを多くの受信者に送信すると 圧倒されてしまうかもしれません -- は、ニュースレター のような と同じです。これにはすべて、受信者リストを反復処理して電子メールを送信する優れた軽量ループが含まれます.mail関数の形式は同じです :