ホームページ >バックエンド開発 >PHPチュートリアル >PHP はさまざまな形式でメールを送信します (メール qmail メール システム phpmailer クラス)_PHP チュートリアル

PHP はさまざまな形式でメールを送信します (メール qmail メール システム phpmailer クラス)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:40:14965ブラウズ

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

." こんにちは!

ありがとうございます。このメールはテスト用です!"; //コンテンツ情報

$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.comtru​​ehttp://www.bkjia.com/PHPjc/726027.html技術記事 1. mail() 関数の使用については特に言うことはありません。通常、送信にはシステムの組み込み SMTP システムが使用されます。これは各システムによって異なります。リファレンスマニュアルの使い方...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。