ホームページ >バックエンド開発 >PHPチュートリアル >PHPでメール送信を実装するというアイデア

PHPでメール送信を実装するというアイデア

墨辰丷
墨辰丷オリジナル
2018-06-06 16:51:261876ブラウズ

この記事では主にphpでメール送信を実装するアイデアを紹介します。興味のある方はぜひ参考にしてください。

この記事の主な内容は、PHP を使用してメールを送信することであり、次の 2 つの方法にまとめられています:

1. PHP の組み込み mail() 関数を使用します

<?php 
$to = "test@163.com"; //收件人 
$subject = "Test"; //主题 
$message = "This is a test mail!"; //正文 
mail($to,$subject,$message);

結果は直接エラーになります、次のように:

警告: mail() [function.mail]: 「localhost」ポート 25 でメールサーバーに接続できませんでした。php.ini の「SMTP」および「smtp_port」設定を確認するか、D の ini_set() を使用してください。 /www/Zend/ email/email.php 行 10

分析理由: ローカル SMTP サーバーが必要で、コードを再度変更しました:

<?php 
$to = "test@163.com";//收件人 
$subject = "Test";//邮件主题 
$message = "This is a test mail!";//邮件正文 
ini_set(&#39;SMTP&#39;,&#39;smtp.163.com&#39;);//发件SMTP服务器 
ini_set(&#39;smtp_port&#39;,25);//发件SMTP服务器端口 
ini_set(&#39;sendmail_from&#39;,"admin@163.com");//发件人邮箱 
mail($to,$subject,$message);

結果はまだ間違っています:

警告: mail() [function.mail] : SMTP サーバーの応答: 553 認証が必要です,smtp2,DNGowKD7v5BTDo9NnplVBA--.1171S2 1301220947 inD:/www/Zend/email/email.php on line 9

分析理由: 検証情報が必須ですが、検証情報はどのように記載すればよいですか?どこで設定するのでしょうか?これらの質問についていくつかの技術記事を参照した結果、mail() 関数を使用して電子メールを送信するには、SMTP 認証なしでレターを送信できるメール サーバーが必要であるという結論に達しました。しかし、現在のSMTPメールサーバーは基本的に認証が必要なため、これを使ってメールを送信したい場合は、認証を必要としないローカルSMTPサーバーを構築するしかありません。 構築方法: Windows に付属の IIS を使用するか、インターネットから他の SMTP サーバー ソフトウェアをダウンロードします。

結論: mail() 関数を使用して電子メールを送信するには、認証を必要としない SMTP サーバーが必要です。この場合、設定作業はもう少し多くなりますが、数行のコードを書くだけで簡単に使用できます。

2. SMTP プロトコルをカプセル化するメール クラスを使用します

この方法は、特にサーバーを持たず、インターネットから仮想ホストを購入する大多数の学生にとって比較的一般的です。最初の方法は非現実的です。そのため、彼らは依然として SMTP 契約を使用して電子メールを送信しています。

ただし、この作業を完了するには、SMTP プロトコルをある程度理解する必要があります。すべてを自分で行いたい学生は自分でプロトコルを作成し、独自のものとして使用したい学生はインターネットからダウンロードできます。 。 沢山あります。

ただし、 拡張機能の Mail クラス を使用することをお勧めします。 はプレーン テキストでの電子メールをサポートし、フィールドごとに HTML エンコーディングを設定でき、正しい設定により中国語の文字化けが発生しません。文字; はい 添付ファイルなどをサポートします。

サーバー上で

Mail install Mail コマンドを使用すると、十分なサーバー権限を持たない学生でも、クラスの PHP ソース コードを直接ダウンロードしてインクルードすることができます。

注: Mail クラスは Net/SMTP.php と Mail/mime.php に依存しており、使用する場合は一緒にダウンロードしてインクルードする必要があります。

Mail クラスで電子メールを送信する方法の例を示します。インターネット上の他の SMTP メール クラスの使用法も同様です。

<?php 
 
// Pear Mail 扩展 
require_once(&#39;Mail.php&#39;); 
require_once(&#39;Mail/mime.php&#39;); 
require_once(&#39;Net/SMTP.php&#39;); 
 
$smtpinfo = array(); 
$smtpinfo["host"] = "smtp.163.com";//SMTP服务器 
$smtpinfo["port"] = "25"; //SMTP服务器端口 
$smtpinfo["username"] = "username@163.com"; //发件人邮箱 
$smtpinfo["password"] = "password";//发件人邮箱密码 
$smtpinfo["timeout"] = 10;//网络超时时间,秒 
$smtpinfo["auth"] = true;//登录验证 
//$smtpinfo["debug"] = true;//调试模式 
 
// 收件人列表 
$mailAddr = array(&#39;receiver@163.com&#39;); 
 
// 发件人显示信息 
$from = "Name <username@163.com>"; 
 
// 收件人显示信息 
$to = implode(&#39;,&#39;,$mailAddr); 
 
// 邮件标题 
$subject = "这是一封测试邮件"; 
 
// 邮件正文 
$content = "<h3>随便写点什么</h3>"; 
 
// 邮件正文类型,格式和编码 
$contentType = "text/html; charset=utf-8"; 
 
//换行符号 Linux: \n Windows: \r\n 
$crlf = "\n"; 
$mime = new Mail_mime($crlf); 
$mime->setHTMLBody($content); 
 
$param[&#39;text_charset&#39;] = &#39;utf-8&#39;; 
$param[&#39;html_charset&#39;] = &#39;utf-8&#39;; 
$param[&#39;head_charset&#39;] = &#39;utf-8&#39;; 
$body = $mime->get($param); 
 
$headers = array(); 
$headers["From"] = $from; 
$headers["To"] = $to; 
$headers["Subject"] = $subject; 
$headers["Content-Type"] = $contentType; 
$headers = $mime->headers($headers); 
 
$smtp =& Mail::factory("smtp", $smtpinfo); 
 
 
$mail = $smtp->send($mailAddr, $headers, $body); 
$smtp->disconnect(); 
 
if (PEAR::isError($mail)) { 
  //发送失败 
  echo &#39;Email sending failed: &#39; . $mail->getMessage()."\n"; 
} 
else{ 
  //发送成功 
  echo "success!\n"; 
}

インターネット上にある SMTP クラスが高度にカプセル化されている場合。上記の方が簡単ですが、使用方法は比較的似ています。

結論: この方法でメールを送信するためにソフトウェアをインストールする必要はありません。必要なのは、PHP クラスを追加してさらに数行の設定コードを記述するだけです。また、サンプルコードはインターネット上に多数公開されており、それらをコピーしていくつかのパラメータを変更するだけで使用できる場合が多いため、この方法を使用することをお勧めします。

要約: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。

関連する推奨事項:

ファイルをダウンロードするためのPHP関数の例の詳細な説明

PHPがQRCODEに基づいてカラーQRコードを生成する方法

PHPはログイン確認コード関数と呼び出しメソッドを実装します

以上がPHPでメール送信を実装するというアイデアの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。