1. mail()関数を使用する
特に言うことはありません。システムに組み込まれている SMTP システム (通常は sendmail) を使用して送信するだけです。これは各システムによって異なります。リファレンスマニュアルをご利用ください。
2. パイプフォームを使用する
昨日、ローカルの qmail を使用して電子メールを送信して、テストに成功しました。
コードをコピーします コードは次のとおりです:
/* qmail を使用してメール関数を送信*/
function send_check_mail($email, $subject,$uid,$buffer)
{
$command = "/var/qmail /bin/qmail-inject ".$email; //qmail プログラムのアドレス、$email は送信されるアドレスです
$handle = Popen($command, "w") //パイプを開きます://www.cnblogs.com/roucheng/
if (!$handle) {
return false; }
$from = "webmaster@unixsky.net" //送信者
fwrite($handle, "From: ".$from. "\n"); //パイプにデータを書き込みます
fwrite($handle, "Return-Path: ".$from."\n");
fwrite($handle, "To: " .$uid."\ n");
fwrite($handle, "件名: ".$subject."\n");
fwrite($handle, "Mime-Version: 1.0\n"); $handle, "Content-Type: text/html; charset=\"gb2312\"\n\n");
fwrite($handle, $buffer."\n"); //パイプを閉じます
return true ;
}
---------------------メール送信のテスト:
//メールを送信
$subject = "Test Email";
$uid = $_POST ['uid']; //情報より
$content = "".$u_email
." こんにちは!
ありがとうございます, このメールはテスト用です!"; //コンテンツ情報
$u_email = "hren@yahoo.com.cn"; //メールは
if (send_check_mail( $u_email, $subject, $uid , $content)) {
echo "おめでとうございます!投票メールがあなたの受信箱に届きます!
メールを確認してください: ".$u_email."
". $close;
} else {
echo "残念ながら、投票メールをメールボックスに送信できませんでした。もう一度試すか、開発者に問い合わせてください。
". $close;
}
もちろん、同じ方法を使用して sendmail プロセスを処理してメールを送信することもできます。
以下のコード例:
コードをコピーします
コードは次のとおりです:$pp = Popen("/usr/sbin/sendmail -t", "w") または die("Cannot fork sendmail ");
fputs($pp, "宛先: sterling@designmultimedia.com\r\n");
fputs($pp, "返信先: $senders_email\r\n");
fputs($pp, "From: $ senders_email\r\n");
fputs($pp, "Subject The Results of your form\r\n\r\n");
fputs($pp, "$senders_email は次のコメントを送信しました: \r\n ");
fputs($pp, $comments);
pclose($pp) または die("sendmail へのパイプを閉じることができません");
?>
実際、このパイプライン メソッドは比較的低レベルであり、呼び出すプログラムの安定性に依存します。したがって、これは電子メールを送信するオプションの方法です。
3. phpmailerクラスを使用する
これはオープンソースの電子メール クラスであり、メイン Web サイト: 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->ホスト = "smtp1.example.com;smtp2.example.com";
$mail->メーラー = "smtp";
@MYSQL_CONNECT("ローカルホスト","ルート","パスワード");
@mysql_select_db("my_company");
$query?=?SELECT full_name, email,?hoto?ROM 従業員?HERE?d=$id";
$result??MYSQL_QUERY($query);
while ($row = mysql_fetch_array ($result))
{
// HTML body
$body = "Hello
"";
$body .= "
あなたの ";
$body .= "敬具
";
$body .= "phpmailer List manager";
// プレーン テキストの本文 (メール クライアント用) HTML を読んでください)
$text_body = "こんにちは " . $row["full_name"] . ", \n\n";
$text_body .= "このメッセージにあなたの個人的な写真を送ります。\n\n";
$text_body . = "敬具、\n";
$text_body .= "phpmailer リスト マネージャー";
$mail->Body = $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"; // IsSMTP() の代替
var $WordWrap = 75;
// デフォルトの error_handler を置き換えます
function error_handler($msg) {
print("My Site Error");
print("説明:");
printf("%s", $msg);
終了します。
}
// 追加の関数を作成します
function do_something($something) {
// 新しいコードをここに配置します
}
}
これで、サイト内の通常の PHP ページが表示されます。これには上記のデフォルト設定がすべて含まれています: 通常の PHP ファイル: mail_test.php
复制代価代価如下:
require("mail.inc.php");
// 新しいクラスをインスタンス化します
$mail = new my_phpmailer;
// あとは必要なものを追加するだけです
$mail->AddAddress(" josh@example.com", "Josh Adams");
$mail->Subject = "これが件名です";
$mail->Body = "これがメッセージ本文です";
$mail-> AddAttachment("c:/temp/11-10-00.zip", "new_name.zip"); // オプションの名前
if(!$mail->Send())
{
echo "メッセージ送信エラー";
exit;
}
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
." こんにちは!
ありがとうございます。このメールはテスト用です!
html>"; //コンテンツ情報
$u_email = "hren@yahoo.com.cn"; //メールアドレスに送信
$smtp = new 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\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(); //接続を切断します
;
http://www.bkjia.com/PHPjc/726027.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/726027.html技術記事 1. mail() 関数の使用については特に言うことはありません。通常、送信にはシステムの組み込み SMTP システムが使用されます。これは各システムによって異なります。リファレンスマニュアルの使い方...