ホームページ バックエンド開発 PHPチュートリアル 電子メール送信 class_PHP チュートリアルを完了する

電子メール送信 class_PHP チュートリアルを完了する

Jul 20, 2016 am 11:07 AM
class port public smtp t var variables 送信 全体 親切 郵便

完整邮件送信类
class smtp
{
/* パブリック変数 */
var $smtp_port;
var $time_out;
var $host_name;
var $log_file;
var $relay_host;
var $debug;
var $ auth;
var $user;
var $pass;

/* プライベート変数 */
var $sock;

/* コンストラクター */
function smtp($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass)
{
$this->debug = FALSE;
$this->smtp_port = $smtp_port;
$this->relay_host = $relay_host;
$this->time_out = 30; // fsockopen() で使用されます
$this->auth = $auth;//auth
$this->user = $user;
$this->pass = $pass;
$this->ホスト名 = "ローカルホスト"; //HELO コマンドで使用されます
$this->log_file = "";
$this->sock = FALSE;
}

/* Main Function */
function sendmail($to, $from ,$fromname , $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $Additional_headers = ""){
$mail_from = $this->get_address($this-> ;strip_comment($from));
$body = ereg_replace("(^|(rn))(.)", "1.3", $body);
$header .= "MIME-Version:1.0rn";
if($mailtype=="HTML"){
$header .= "Content-Type:text/html;charset=utf-8rn";
}
$header .= "宛先: ".$to."rn" ;
if ($cc != ""){
$header .= "Cc: ".$cc."rn";
}
$header .= "From: $fromname<".$fromname."> rn";
$header .= "件名: ".$subject."rn";
$header .= $Additional_headers;
$header .= "日付: ".date("r")."rn";
$header .= "X-Mailer:By Redhat (PHP/".php教程version().")rn";
list($msec, $sec) =explode(" ", microtime());
$header .= "メッセージ ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from.">rn";
$TO = 爆発(",", $this->strip_comment($to));

if ($cc != ""){
$TO = array_merge($TO,explode(",", $this->strip_comment ($cc)));
}
if ($bcc != ""){
$TO = array_merge($TO,explode(",", $this->strip_comment($bcc)));
}
$sent = TRUE;
foreach ($TO as $rcpt_to){
$rcpt_to = $this->get_address($rcpt_to);
if (!$this->smtp_sockopen($rcpt_to)){
$this ->log_write("エラー: ".$rcpt_to."n にメールを送信できません");
$sent = FALSE;
続行;
}
if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)){
$this->log_write("電子メールは <".$rcpt_to.">n" に送信されました");
}else{
$ this->log_write("エラー: <".$rcpt_to.">n" にメールを送信できません);
$sent = FALSE;
}
fclose($this->sock);
$this- >log_write("リモートホストnから切断されました");
}
return $sent;
}

/* プライベート関数 */
function smtp_send($helo, $from, $to, $header, $body = ""){
if (!$this->smtp_putcmd("HELO", $helo)){
return $this->smtp_error("HELO コマンドの送信中");
}

#auth
if($this->auth){
if (!$this->smtp_putcmd("AUTH LOGIN",base64_encode) ($this->user))){
return $this->smtp_error("HELO コマンドの送信中");
}
if (!$this->smtp_putcmd("", Base64_encode($this-> pass))){
return $this->smtp_error("HELO コマンドの送信中");
}
}
if (!$this->smtp_putcmd("MAIL", "FROM:<".$from. ">")){
return $this->smtp_error("sending MAIL FROM command");
}
if (!$this->smtp_putcmd("RCPT", "TO:<".$to) .">gt;")){
return $this->smtp_error("RCPT TO コマンドを送信中");
}
if (!$this->smtp_putcmd("DATA")){
return $this->gt ;smtp_error("DATA コマンドの送信");
}
if (!$this->smtp_message($header, $body)){
return $this->smtp_error("メッセージの送信");
}
if (!$this->smtp_eom()){
return $this->smtp_error("を送信中。 [EOM]");
}
if (!$this->smtp_putcmd("QUIT")){
return $this->smtp_error("QUIT コマンドの送信中");
}
return TRUE;
}

function smtp_sockopen($address){
if ($this->relay_host == ""){
return $this->smtp_sockopen_mx($address);
}
else{
return $this->smtp_sockopen_relay( );
}
}

function smtp_sockopen_relay(){
$this->log_write("".$this->relay_host." を試行しています。":".$this->smtp_port."n");
$this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out);
if (!($this->sock && $this->smtp_ok​​())){
$this->log_write("エラー: リレー ホスト ".$this->relay_host."n" に接続できません。");
$this->log_write("エラー: ".$errstr." (".$errno.")n");
return FALSE;
}
$this->log_write("リレー ホスト ".$this->relay_host."n ");
return TRUE;;
}

function smtp_sockopen_mx($address){
$domain = ereg_replace("^.+@([^@]+)$", "1", $address);
if (!@getmxrr($domain, $MXHOSTS)){
$this->log_write("エラー: MX "".$domain.""n");
return FALSE;
}
foreach ($MXHOSTS as $host){
$this->log_write("Trying to ".$host.":".$this->smtp_port."n");
$this->sock = @fsockopen($host 、$this->smtp_port、$errno、$errstr、$this->time_out);
if (!($this->sock && $this->smtp_ok​​())){
$this-> ;log_write("警告: mx ホスト ".$host."n");
$this->log_write("エラー: ".$errstr." (".$errno.")n");
続行;
}
$this->log_write("MX ホスト ".$host."n" に接続しました);
return TRUE;
}
$this->log_write("エラー: どの mx にも接続できませんhosts (".implode(", ", $MXHOSTS).")n");
return FALSE;
}

function smtp_message($header, $body){
fputs($this->sock, $header."rn".$body);
$this->smtp_debug("> ".str_replace("rn" , "n"."> ", $header."n> ".$body."n> "));
return TRUE;
}

function smtp_eom(){
fputs($this->sock , "rn.rn");
$this->smtp_debug(".[EOM]n");
return $this->smtp_ok​​();
}

function smtp_ok​​(){
$response = str_replace ("rn", "", fgets($this->sock, 512));
$this->smtp_debug($response."n");
if (!ereg("^[23]", $response)){
fputs($this->sock, "QUITrn");
fgets($this->sock, 512);
$this->log_write("エラー: リモート ホストが "" を返しました。 $response.""n");
return FALSE;
}
return TRUE;
}

function smtp_putcmd($cmd, $arg = ""){
if($arg != ""){
if( $cmd==""){
$cmd = $arg;
}
else{
$cmd = $cmd." ".$arg;
}
}
fputs($this->sock, $cmd. "rn");
$this->smtp_debug(">gt; ".$cmd."n");
return $this->smtp_ok​​();
}

function smtp_error($string){
$ this->log_write("Error: ".$string.".n");
return FALSE;
}

function log_write($message){
$this->smtp_debug($message);
if ($this->log_file == ""){
return TRUE;
}
$message = date("M d H:i:s ").get_current_user()."[".getmypid(). "]: ".$message;
if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, "a"))){
$this->smtp_debug("警告: ログ ファイルを開けません "".$this->log_file.""n ");
return FALSE;;
}
flock($fp, LOCK_EX);
fputs($fp, $message);
fclose($fp);
return TRUE;
}

functionstrip_comment($address) {//去除"()"
$comment = "([^()]*)";
while (ereg($comment, $address)){
$address = ereg_replace($comment, "", $address );
}
return $address;
}

function get_address($address){
$address = ereg_replace("([trn])+", "", $address);//t 制表符 r 回车符 n 换行符 +一致前面の子表达式一次または複数次
$address = ereg_replace("^.*<(.+)>.*$", "1", $address);
return $ address;
}

function smtp_debug($message){
if ($this->debug){
echo $message;
}
}
}


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/444980.html技術記事完整邮件送信类 class smtp { /* パブリック変数 */ var $smtp_port; var $time_out; var $ホスト名; var $log_file; var $relay_host; var $debug; var $auth; var $user; var $pass...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Windows 11のコントロールパネルからOutlookメールが失われる Windows 11のコントロールパネルからOutlookメールが失われる Feb 29, 2024 pm 03:16 PM

Windows 11 のコントロール パネルに Outlook メール アイコンがありませんか?この予期せぬ状況は、通信ニーズに OutlookMail に依存している一部の人々に混乱と懸念を引き起こしました。 Outlook メールがコントロール パネルに表示されないのはなぜですか?コントロール パネルに Outlook メール アイコンが表示されない理由はいくつか考えられます。 Outlook が正しくインストールされていません。 Microsoft Store から Office アプリケーションをインストールしても、メール アプレットはコントロール パネルに追加されません。コントロール パネルに mlcfg32.cpl ファイルの場所がありません。レジストリ内のmlcfg32.cplファイルへのパスが正しくありません。現在、オペレーティング システムはこのアプリケーションを実行するように構成されていません

Word の差し込み印刷で空白ページが印刷される Word の差し込み印刷で空白ページが印刷される Feb 19, 2024 pm 04:51 PM

Word を使用して差し込み印刷文書を印刷するときに空白のページが表示される場合は、この記事が役に立ちます。差し込み印刷は、個人用の文書を簡単に作成し、複数の受信者に送信できる便利な機能です。 Microsoft Word の差し込み印刷機能は、ユーザーが受信者ごとに同じコンテンツを手動でコピーする時間を節約できるため、高く評価されています。差し込み文書を印刷するには、[差し込み文書] タブに移動します。しかし、一部の Word ユーザーは、差し込み文書を印刷しようとすると、プリンターで空白のページが印刷されたり、まったく印刷されなかったりすると報告しています。これは、間違ったフォーマットまたはプリンター設定が原因である可能性があります。文書とプリンターの設定を確認し、印刷前に必ず文書をプレビューして内容が正しいことを確認してください。もし

PHP は電子メールを非同期に送信します。電子メールの送信を長時間待つ必要がなくなります。 PHP は電子メールを非同期に送信します。電子メールの送信を長時間待つ必要がなくなります。 Sep 19, 2023 am 09:10 AM

PHP は電子メールを非同期に送信します。電子メールの送信を長時間待つ必要がなくなります。はじめに: Web 開発では、電子メールの送信は一般的な機能の 1 つです。しかし、メールの送信にはサーバーとの通信が必要となるため、ユーザーはメールの送信を待つ間、長時間待たされてしまうことがよくあります。この問題を解決するには、PHP を使用して電子メールを非同期に送信し、ユーザー エクスペリエンスを最適化します。この記事では、具体的なコード例を通じてメールを非同期に送信し、長時間の待ち時間を回避するための PHP の実装方法を紹介します。 1. メールの非同期送信について理解する

TikTokで他の人にファイルを送信するにはどうすればよいですか?他の人に送信したファイルを削除するにはどうすればよいですか? TikTokで他の人にファイルを送信するにはどうすればよいですか?他の人に送信したファイルを削除するにはどうすればよいですか? Mar 22, 2024 am 08:30 AM

Douyin では、ユーザーは自分の人生の詳細や才能を共有するだけでなく、他のユーザーと交流することもできます。このプロセスでは、写真やビデオなどのファイルを他のユーザーに送信する必要がある場合があります。では、Douyin で他の人にファイルを送信するにはどうすればよいでしょうか? 1.Douyin で他の人にファイルを送信するにはどうすればよいですか? 1. Douyin を開き、ファイルを送信するチャット インターフェイスに入ります。 2. チャット インターフェイスの「+」記号をクリックし、「ファイル」を選択します。 3. ファイル オプションで、写真、ビデオ、オーディオ、その他のファイルの送信を選択できます。送信したいファイルを選択後、「送信」をクリックします。 4. 相手がファイルを受け入れるまで待ちます。相手がそれを受け入れると、ファイルは正常に転送されます。 2.Douyin で他の人に送信したファイルを削除するにはどうすればよいですか? 1. Douyin を開き、送信したテキストを入力します。

WhatsApp のヒント: HD 写真とビデオを送信する方法 WhatsApp のヒント: HD 写真とビデオを送信する方法 Sep 10, 2023 am 10:13 AM

WhatsApp は、ユーザーがメッセージング プラットフォームを通じて写真やビデオを高解像度で送信できる新しいオプションを開始しました。それがどのように行われるかを知るために読んでください。 WhatsApp は、iPhone と Android ユーザーが高解像度で写真やビデオを送信できるようにするアップデートをリリースし、ついにサービスの低品質メディア共有制限に対処しました。このオプションは「HD 品質」と呼ばれ、ユーザーが最小限の圧縮でより鮮明な写真やビデオを送信できることを意味します。たとえば、iPhone でキャプチャした画像は、以前の最大解像度 920x1280 ではなく 3024x4032 で送信できるようになり、ビデオは 848x476 ではなく 1280x718 解像度で送信できるようになりました。

PHP メール追跡機能: ユーザーの行動とメールに関するフィードバックを理解します。 PHP メール追跡機能: ユーザーの行動とメールに関するフィードバックを理解します。 Sep 19, 2023 am 08:51 AM

PHP メール追跡機能: ユーザーの行動とメールに対するフィードバックを理解する 現代社会において、メールは人々の日常生活や仕事に欠かせないものとなっています。企業にとって、電子メールの送信は、顧客とコミュニケーションを取り、製品やサービスを宣伝するための重要な方法の 1 つです。しかし、電子メールが送信された後、それが受信されたか、読まれたか、またはユーザーが電子メールの内容にどのように反応したかをどのようにして知ることができるのでしょうか?このとき、メール追跡機能が特に重要になります。電子メール追跡機能は、ユーザーの行動や電子メールに関するフィードバックを理解するのに役立ちます

iPhone でリアルタイムのボイスメール文字起こしを使用する方法 iPhone でリアルタイムのボイスメール文字起こしを使用する方法 Nov 18, 2023 pm 04:03 PM

リアルタイムのボイスメール文字起こしとは何ですか?ライブ ボイスメール トランスクリプションは、iOS 16 で導入された革新的な機能で、iPhone ユーザーがボイスメールを残しながらそのライブ トランスクリプションを表示できるようにします。この機能は、高度な音声認識テクノロジーを利用して話された言葉をテキストに変換し、ニュースを全部聞かなくても最新のニュースを入手できる便利でアクセスしやすい方法を提供します。ライブ ボイスメール トランスクリプションを使用する利点 ライブ ボイスメール トランスクリプションは、iPhone ユーザーにいくつかの利点を提供します: 生産性の向上: リアルタイムのトランスクリプションを提供することで、ライブ ボイスメール トランスクリプションはボイスメール全体を聞く必要がなくなり、ユーザーの時間と労力を節約します。これにより、ユーザーはボイスメールの内容をすばやく確認し、応答に優先順位を付けることができます。聴覚障害のあるユーザーのためのアクセシビリティ

iOS の開発者バージョンとパブリック バージョンの違いは何ですか? iOS の開発者バージョンとパブリック バージョンの違いは何ですか? Mar 01, 2024 pm 12:55 PM

毎年、Apple が iOS と macOS の新しいメジャー バージョンをリリースする前に、ユーザーは数か月前にベータ版をダウンロードして最初に体験することができます。同ソフトウェアは一般ユーザーと開発者の両方が使用するため、Appleは開発者向けベータ版のパブリックベータ版である開発者版とパブリック版を両方向けに開始した。 iOS の開発者バージョンとパブリック バージョンの違いは何ですか?文字通りに言うと、開発者バージョンは開発者テスト バージョンであり、パブリック バージョンは公開テスト バージョンです。開発者バージョンとパブリック バージョンは、異なるユーザーを対象としています。開発者バージョンは、Apple が開発者によるテストのために使用します。ダウンロードしてアップグレードするには、Apple 開発者アカウントが必要です。

See all articles