ホームページ > バックエンド開発 > PHPチュートリアル > php_PHP チュートリアルを使用してさまざまな形式でメールを送信する

php_PHP チュートリアルを使用してさまざまな形式でメールを送信する

WBOY
リリース: 2016-07-13 10:40:09
オリジナル
955 人が閲覧しました

この記事では、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 ​ ."こんにちは!

ありがとうございます、このメールはテスト用です!"; //コンテンツ情報 ​ $u_email = "hren@yahoo.com.cn"; //メールの送信先 if (send_check_mail($u_email, $subject, $uid, $content)) { ​ echo "おめでとうございます! 投票メールがあなたのメールアドレスに送信されます!

メールを確認してください: ".$u_email."
< ;br>"。 $close; } それ以外 { ​ echo "残念ながら、投票メールをメールボックスに送信できませんでした。もう一度試すか、開発スタッフに問い合わせてください。

" ​ } ​ ​ もちろん、同じ方法を使用して sendmail プロセスを処理して電子メールを送信することもできます。​ ​ 以下のコード例: ​ コードは以下のように表示されます: ​ ​ 実際、このパイプライン メソッドは比較的低レベルであり、呼び出すプログラムの安定性に依存します。したがって、これは電子メールを送信するオプションの方法です。​ ​ ​ 3.phpmailerクラスを使用する ​ オープンソースの電子メール クラスです。メイン サイト: http://phpmailer.sourceforge.net ​ 内部には 2 つのファイルがあり、1 つは class.smtp.php、もう 1 つは class.phpmailer.php です。 また、公式サイトの利用方法は以下の通りです。 phpmailerを使用した例 1. 高度な例これは、マルチパート/代替サポートを使用して、MySQL データベースからバイナリ添付ファイルを含む複数の電子メール メッセージを送信する方法を示します。 ​ コードは以下のように表示されます: require("class.phpmailer.php"); ​ $mail = 新しいphpmailer(); ​ $mail->From = "list@example.com"; $mail->FromName = "リストマネージャー"; $mail->Host = "smtp1.example.com;smtp2.example.com"; $mail->メーラー = "smtp"; ​ @MYSQL_CONNECT("ローカルホスト","ルート","パスワード"); @mysql_select_db("my_company"); $query?=?SELECT フルネーム、メールアドレス、?hoto?ROM 従業員?HERE?d=$id"; $result??MYSQL_QUERY($query); ​ while ($row = mysql_fetch_array ($result)) { // HTML本文 $body = "こんにちは $row["full_name"] ",

"; $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 = "".$u_email ​ ."こんにちは!

ありがとうございます、このメールはテスト用です!"; //コンテンツ情報 ​ $u_email = "hren@yahoo.com.cn"; //メールの送信先 ​ $smtp = 新しい Net_SMTP('192.168.0.1'); //smtp サーバー $smtp->connect(); //サーバーに接続します $smtp->helo('unixsky.net'); //HELO 情報をサーバーに送信します。 $smtp->mailFrom('hren@unixsky.net'); //送信者アドレス $smtp->rcptTo($u_email); //受信者のアドレス $date = date('r') //送信日を取得します。 $smtp->data("Date: $date\r\nFrom: vdddote@eyou.net\r\nTo: $u_email\r\nSubject: $subject\r\nContent-Type: text/html; charset=\ "gb2312\"\r\n\r\n$content\r\n"); //送信データを追加して送信 $smtp->disconnect(); //接続を閉じます

www.bkjia.com本当http://www.bkjia.com/PHPjc/727575.html技術記事この記事では、mail()関数の使い方、パイプの使い方、phpmailerクラスの使い方など、PHPでメールを送信する様々な方法を中心に紹介していますので、ぜひ参考にしてみてください。 1.m...を使う
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート