phpはsmtpサービスを使用して最初に電子メールを送信します
Jun 13, 2016 pm 12:11 PM
php は最初にメールを送信するために smtp サービスを使用します
define('SMTP_STATUS_NOT_CONNECTED', 1, true);define('SMTP_STATUS_CONNECTED', 2, true);class smtp{ var $connection; var $recipients; var $headers; var $timeout; var $errors; var $status; var $body; var $from; var $host; var $port; var $helo; var $auth; var $user; var $pass; /** * 參數(shù)為一個(gè)數(shù)組 * host SMTP 服務(wù)器的主機(jī) 默認(rèn):localhost * port SMTP 服務(wù)器的端口 默認(rèn):25 * helo 發(fā)送HELO命令的名稱 默認(rèn):localhost * user SMTP 服務(wù)器的用戶名 默認(rèn):空值 * pass SMTP 服務(wù)器的登陸密碼 默認(rèn):空值 * timeout 連接超時(shí)的時(shí)間 默認(rèn):5 * @return bool */ function smtp($params = array()) { if (!defined('CRLF')) { define('CRLF', "\r\n", true); } $this->timeout = 10; $this->status = SMTP_STATUS_NOT_CONNECTED; $this->host = 'localhost'; $this->port = 25; $this->auth = false; $this->user = ''; $this->pass = ''; $this->errors = array(); foreach ($params AS $key => $value) { $this->$key = $value; } $this->helo = $this->host; // 如果沒(méi)有設(shè)置用戶名則不驗(yàn)證 $this->auth = ('' == $this->user) ? false : true; } function connect($params = array()) { if (!isset($this->status)) { $obj = new smtp($params); if ($obj->connect()) { $obj->status = SMTP_STATUS_CONNECTED; } return $obj; } else { if (!empty($GLOBALS['_CFG']['smtp_ssl'])) { $this->host = "ssl://" . $this->host; } $this->connection = @fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout); if ($this->connection === false) { $this->errors[] = 'Access is denied.'; return false; } @socket_set_timeout($this->connection, 0, 250000); $greeting = $this->get_data(); if (is_resource($this->connection)) { $this->status = 2; return $this->auth ? $this->ehlo() : $this->helo(); } else { log_write($errstr, __FILE__, __LINE__); $this->errors[] = 'Failed to connect to server: ' . $errstr; return false; } } } /** * 參數(shù)為數(shù)組 * recipients 接收人的數(shù)組 * from 發(fā)件人的地址,也將作為回復(fù)地址 * headers 頭部信息的數(shù)組 * body 郵件的主體 */ function send($params = array()) { foreach ($params AS $key => $value) { $this->$key = $value; } if ($this->is_connected()) { // 服務(wù)器是否需要驗(yàn)證 if ($this->auth) { if (!$this->auth()) { return false; } } $this->mail($this->from); if (is_array($this->recipients)) { foreach ($this->recipients AS $value) { $this->rcpt($value); } } else { $this->rcpt($this->recipients); } if (!$this->data()) { return false; } $headers = str_replace(CRLF . '.', CRLF . '..', trim(implode(CRLF, $this->headers))); $body = str_replace(CRLF . '.', CRLF . '..', $this->body); $body = substr($body, 0, 1) == '.' ? '.' . $body : $body; $this->send_data($headers); $this->send_data(''); $this->send_data($body); $this->send_data('.'); return (substr($this->get_data(), 0, 3) === '250'); } else { $this->errors[] = 'Not connected!'; return false; } } function helo() { if (is_resource($this->connection) AND $this->send_data('HELO ' . $this->helo) AND substr($error = $this->get_data(), 0, 3) === '250' ) { return true; } else { $this->errors[] = 'HELO command failed, output: ' . trim(substr($error, 3)); return false; } } function ehlo() { if (is_resource($this->connection) AND $this->send_data('EHLO ' . $this->helo) AND substr($error = $this->get_data(), 0, 3) === '250' ) { return true; } else { $this->errors[] = 'EHLO command failed, output: ' . trim(substr($error, 3)); return false; } } function auth() { if (is_resource($this->connection) AND $this->send_data('AUTH LOGIN') AND substr($error = $this->get_data(), 0, 3) === '334' AND $this->send_data(base64_encode($this->user)) // Send username AND substr($error = $this->get_data(),0,3) === '334' AND $this->send_data(base64_encode($this->pass)) // Send password AND substr($error = $this->get_data(),0,3) === '235' ) { return true; } else { $this->errors[] = 'AUTH command failed: ' . trim(substr($error, 3)); return false; } } function mail($from) { if ($this->is_connected() AND $this->send_data('MAIL FROM:<' . $from . '>') AND substr($this->get_data(), 0, 2) === '250' ) { return true; } else { return false; } } function rcpt($to) { if ($this->is_connected() AND $this->send_data('RCPT TO:<' . $to . '>') AND substr($error = $this->get_data(), 0, 2) === '25') { return true; } else { $this->errors[] = trim(substr($error, 3)); return false; } } function data() { if ($this->is_connected() AND $this->send_data('DATA') AND substr($error = $this->get_data(), 0, 3) === '354' ) { return true; } else { $this->errors[] = trim(substr($error, 3)); return false; } } function is_connected() { return (is_resource($this->connection) AND ($this->status === SMTP_STATUS_CONNECTED)); } function send_data($data) { if (is_resource($this->connection)) { return fwrite($this->connection, $data . CRLF, strlen($data) + 2); } else { return false; } } function get_data() { $return = ''; $line = ''; if (is_resource($this->connection)) { while (strpos($return, CRLF) === false OR $line{3} !== ' ') { $line = fgets($this->connection, 512); $return .= $line; } return trim($return); } else { return ''; } } /** * 獲得最后一個(gè)錯(cuò)誤信息 * * @access public * @return string */ function error_msg() { if (!empty($this->errors)) { $len = count($this->errors) - 1; return $this->errors[$len]; } else { return ''; } }}?>

ホットAIツール

Undress AI Tool
脫衣畫像を無(wú)料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版
中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質(zhì)はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質(zhì)はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結(jié)果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

C 言語(yǔ)における return の使い方は、 1. 戻り値の型が void の関數(shù)については、return 文を使用して関數(shù)の実行を早期に終了することができます; 2. 戻り値の型が void ではない関數(shù)については、 return ステートメントは、関數(shù)の実行を終了するためのものです。結(jié)果は呼び出し元に返されます。 3. 関數(shù)の実行を早期に終了します。関數(shù)內(nèi)で return ステートメントを使用して、関數(shù)の実行を早期に終了することもできます。関數(shù)が値を返さない場(chǎng)合。

Windows 11 で Snipping Tool が機(jī)能しない理由 問(wèn)題の根本原因を理解すると、適切な解決策を見(jiàn)つけるのに役立ちます。 Snipping Tool が正しく動(dòng)作しない主な理由は次のとおりです。 フォーカス アシスタントがオンになっている: これにより、Snipping Tool が開かなくなります。破損したアプリケーション: 起動(dòng)時(shí)にスニッピング ツールがクラッシュする場(chǎng)合は、破損している可能性があります。古いグラフィック ドライバー: 互換性のないドライバーは、スニッピング ツールに干渉する可能性があります。他のアプリケーションからの干渉: 実行中の他のアプリケーションが Snipping Tool と競(jìng)合する可能性があります。証明書の有効期限が切れています: アップグレード プロセス中のエラーにより、この問(wèn)題が発生する可能性があります。これらの簡(jiǎn)単な解決策は、ほとんどのユーザーに適しており、特別な技術(shù)知識(shí)は必要ありません。 1. Windows および Microsoft Store アプリを更新する

ソースコード: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}#出力 上記のコードの出力は、単純に次のように結(jié)論付けることができます:finally の前に return が実行されます。バイトコード レベルで何が起こるかを見(jiàn)てみましょう。以下は、case1 メソッドのバイトコードの一部をインターセプトし、ソース コードを比較して、各命令の意味に注釈を付けます。

パート 1: 最初のトラブルシューティング手順 Apple のシステムステータスを確認(rèn)する: 複雑な解決策を掘り下げる前に、基本から始めましょう。問(wèn)題はデバイスにあるのではなく、Apple のサーバーがダウンしている可能性があります。 Apple のシステム ステータス ページにアクセスして、AppStore が適切に動(dòng)作しているかどうかを確認(rèn)してください。問(wèn)題があれば、Apple が修正してくれるのを待つしかありません。インターネット接続を確認(rèn)します?!窤ppStore に接続できません」問(wèn)題は接続不良が原因である場(chǎng)合があるため、安定したインターネット接続があることを確認(rèn)してください。 Wi-Fi とモバイル データを切り替えるか、ネットワーク設(shè)定をリセットしてみてください ([一般] > [リセット] > [ネットワーク設(shè)定のリセット] > [設(shè)定])。 iOS バージョンを更新します。

php提交表單通過(guò)后,彈出的對(duì)話框怎樣在當(dāng)前頁(yè)彈出php提交表單通過(guò)后,彈出的對(duì)話框怎樣在當(dāng)前頁(yè)彈出而不是在空白頁(yè)彈出?想實(shí)現(xiàn)這樣的效果:而不是空白頁(yè)彈出:------解決方案--------------------如果你的驗(yàn)證用PHP在后端,那么就用Ajax;僅供參考:HTML code

この記事は、vue ソース コードを解釈するのに役立ち、これを使用して Vue2 のさまざまなオプションのプロパティにアクセスできる理由を紹介します。

JavaScript での return の使用には特定のコード例が必要です。 JavaScript では、return ステートメントを使用して関數(shù)から返される値を指定します。関數(shù)の実行を終了するために使用できるだけでなく、関數(shù)が呼び出された場(chǎng)所に値を返すこともできます。 return ステートメントには次の一般的な用途があります。 値を返す return ステートメントは、関數(shù)が呼び出された場(chǎng)所に値を返すために使用できます。簡(jiǎn)単な例を次に示します。 functionadd(a,b){
