この記事では、mail()関数の使い方、パイプの使い方、phpmailerクラスの使い方など、PHPでメールを送信する様々な方法を中心に紹介していますので、ぜひ参考にしてください
1. mail() 関数を使用する 多くのことは言う必要はありません。システムに組み込まれている SMTP システム (通常は sendmail) を使用して送信するだけです。これは各システムによって異なります。リファレンスマニュアルをご利用ください。 2. パイプライン形式を使用する 昨日、テストに成功し、ローカルの qmail を使用して電子メールを送信しました。 コードは以下のように表示されます: /* qmail を使用してメール関数を送信します */ 関数 send_check_mail($email, $subject,$uid,$buffer) { $command = "/var/qmail/bin/qmail-inject ".$email; //qmail プログラムのアドレス、$email は送信されるアドレスです。 $handle = Popen($command, "w"); //パイプを開きます http://www.cnblogs.com/roucheng/ if (!$handle) { false を返します。 } $from = "webmaster@unixsky.net"; fwrite($handle, "From: ".$from."\n"); // データをパイプに書き込みます fwrite($handle, "リターンパス: ".$from."\n"); fwrite($handle, "宛先: ".$uid."\n"); fwrite($handle, "件名: ".$subject."\n"); fwrite($handle, "Mime-Version: 1.0\n"); fwrite($handle, "Content-Type: text/html; charset=\"gb2312\"\n\n"); fwrite($handle, $buffer."\n"); pclose($handle); //パイプを閉じる true を返します。 } ------------------メールの送信テスト: //メールを送る $subject = "テストメール"; $uid = $_POST['uid'] //情報から $content = "".$u_email ."こんにちは!"; $body .= "あなたの個人の写真をこのメッセージに送信してください。
";
$body .= "敬具、
";
$body .= "phpmailer リストマネージャー";
// プレーンテキスト本文 (HTML を読めないメールクライアント用)
$text_body = "こんにちは " . $row["full_name"] ", \n\n";
$text_body .= "このメッセージにはあなたの個人的な写真が含まれています。\n\n";
$text_body .= "敬具、\n";
$text_body .= "phpmailer リストマネージャー";
$mail->本文 = $body;
$mail->AltBody = $text_body;
$mail->AddAddress($row["email"], $row["full_name"]);
$mail->AddStringAttachment($row["photo"], "YourPhoto.jpg");
if(!$mail->Send())
echo "" . $row["email"] "
" への送信中にメール エラーが発生しました。
// 次のループのためにすべてのアドレスと添付ファイルをクリアします
$mail->ClearAddresses();
$mail->ClearAttachments();
}
2. phpmailer の拡張 継承を使用したクラスの拡張は、オブジェクト指向プログラミングの最も強力な機能の 1 つであり、元のクラスをハックすることなく、元のクラスに変更を加えることができます。例を示しました。
以下は、phpmailer クラスを拡張し、特定のサイトのデフォルトを設定するクラスです。
PHP インクルード ファイル: mail.inc.php
コードは以下のように表示されます:
require("class.phpmailer.php");
コードは以下のように表示されます:
class my_phpmailer extends phpmailer {
// すべての新しいオブジェクトにデフォルトの変数を設定します
var $From = "from@example.com";
var $FromName = "メーラー";
var $Host = "smtp1.example.com;smtp2.example.com";
var $Mailer = "smtp";
var $WordWrap = 75;
// デフォルトの error_handler を置き換えます
関数 error_handler($msg) {
print("私のサイトのエラー");
print("説明:");
printf("%s", $msg);
出口;
} }
// 追加の関数を作成します
関数 do_something($something) {
// 新しいコードをここに配置します
} }
}
ここにサイト内の通常の PHP ページがあり、上記のデフォルトがすべて設定されています。
通常のPHPファイル:mail_test.php
コードは以下のように表示されます。
require("mail.inc.php");
// 新しいクラスをインスタンス化します
$mail = 新しい my_phpmailer;
// あとは必要なものを追加するだけです
$mail->AddAddress("josh@example.com", "ジョシュ アダムス");
$mail->Subject = "これが件名です";
$mail->Body = "これはメッセージ本文です";
$mail->AddAttachment("c:/temp/11-10-00.zip", "new_name.zip"); // オプションの名前
if(!$mail->Send())
{
echo "メッセージの送信中にエラーが発生しました";
出口;
}
echo "メッセージは正常に送信されました";
4. PEAR::Net_SMTP コンポーネントを使用する
PEAR は本当に優れたものですが、多くの人はあまり使用しないかもしれませんが、少なくとも私は現在その DB クラスを使用しています。これは電子メールの送信に適しています。
Net_SMTP クラスが必要な場合は、http://pear.php.net にアクセスして、Net_SMTP クラスのユーザー マニュアルをダウンロードできます。
http://pear.php.net/manual/en/package.networking.net-smtp.php
私は上記のクラスを使用していますが、速度などの点でこれが最高ですが、操作にはいくつかの単純な SMTP プロトコルが必要です。
私の使用コード:
コードは以下のように表示されます。
//-----------------------------------------------
require_once 'Net/SMTP.php' // クラスライブラリをロードします。
$subject = "テストメール";
$uid = $_POST['uid'] //情報から
$content = "