邮件操作类

May 25, 2016 pm 05:15 PM

邮件操作类

<?php
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 = true;
$this->smtp_port = $smtp_port;
$this->relay_host = $relay_host;
$this->time_out = 30; 
$this->auth = $auth;
$this->user = $user;
$this->pass = $pass;
$this->host_name = "localhost"; 
$this->log_file ="";
$this->sock = FALSE;
} 
function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "")
{
$mail_from = $this->get_address($this->strip_comment($from));
$body = ereg_replace("(^|(\r\n))(\\.)", "\\1.\\3", $body);
$header .= "MIME-Version:1.0\r\n";
if($mailtype=="HTML")
{
$header .= "Content-Type:text/html\r\n";
}
 $header .= "To: ".$to."\r\n";
if ($cc != "")
{
$header .= "Cc: ".$cc."\r\n";
}
$header .= "From: $from<".$from.">\r\n";
$header .= "Subject: ".$subject."\r\n";
$header .= $additional_headers;
$header .= "Date: ".date("r")."\r\n";
$header .= "X-Mailer:By Redhat (PHP/".phpversion().")\r\n";
list($msec, $sec) = explode(" ", microtime());
$header .= "Message-ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from.">\r\n";
$TO = explode(",", $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("Error: Cannot send email to ".$rcpt_to."\n");
$sent = FALSE;
continue;
}
if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) {
$this->log_write("E-mail has been sent to <".$rcpt_to.">\n");
} else {
$this->log_write("Error: Cannot send email to <".$rcpt_to.">\n");
$sent = FALSE;
}
fclose($this->sock);
$this->log_write("Disconnected from remote host\n");
}
echo "<br>";
echo $header;
return $sent;
}

/* Private Functions */

function smtp_send($helo, $from, $to, $header, $body = "")
{
if (!$this->smtp_putcmd("HELO", $helo)) {
return $this->smtp_error("sending HELO command");
}
#auth
if($this->auth){
if (!$this->smtp_putcmd("AUTH LOGIN", base64_encode($this->user))) {
return $this->smtp_error("sending HELO command");
}

if (!$this->smtp_putcmd("", base64_encode($this->pass))) {
return $this->smtp_error("sending HELO command");
}
}
#
if (!$this->smtp_putcmd("MAIL", "FROM:<".$from.">")) {
return $this->smtp_error("sending MAIL FROM command");
}

if (!$this->smtp_putcmd("RCPT", "TO:<".$to.">")) {
return $this->smtp_error("sending RCPT TO command");
}

if (!$this->smtp_putcmd("DATA")) {
return $this->smtp_error("sending DATA command");
}

if (!$this->smtp_message($header, $body)) {
return $this->smtp_error("sending message");
}

if (!$this->smtp_eom()) {
return $this->smtp_error("sending <CR><LF>.<CR><LF> [EOM]");
}

if (!$this->smtp_putcmd("QUIT")) {
return $this->smtp_error("sending QUIT command");
}

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("Trying to ".$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("Error: Cannot connenct to relay host ".$this->relay_host."\n");
$this->log_write("Error: ".$errstr." (".$errno.")\n");
return FALSE;
}
$this->log_write("Connected to relay host ".$this->relay_host."\n");
return TRUE;;
}

function smtp_sockopen_mx($address)
{
$domain = ereg_replace("^.+@([^@]+)$", "\\1", $address);
if (!@getmxrr($domain, $MXHOSTS)) {
$this->log_write("Error: Cannot resolve 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("Warning: Cannot connect to mx host ".$host."\n");
$this->log_write("Error: ".$errstr." (".$errno.")\n");
continue;
}
$this->log_write("Connected to mx host ".$host."\n");
return TRUE;
}
$this->log_write("Error: Cannot connect to any mx hosts (".implode(", ", $MXHOSTS).")\n");
return FALSE;
}

function smtp_message($header, $body)
{
fputs($this->sock, $header."\r\n".$body);
$this->smtp_debug("> ".str_replace("\r\n", "\n"."> ", $header."\n> ".$body."\n> "));

return TRUE;
}

function smtp_eom()
{
fputs($this->sock, "\r\n.\r\n");
$this->smtp_debug(". [EOM]\n");

return $this->smtp_ok();
}

function smtp_ok()
{
$response = str_replace("\r\n", "", fgets($this->sock, 512));
$this->smtp_debug($response."\n");

if (!ereg("^[23]", $response)) {
fputs($this->sock, "QUIT\r\n");
fgets($this->sock, 512);
$this->log_write("Error: Remote host returned \"".$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."\r\n");
$this->smtp_debug("> ".$cmd."\n");

return $this->smtp_ok();
}

function smtp_error($string)
{
$this->log_write("Error: Error occurred while ".$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("Warning: Cannot open log file \"".$this->log_file."\"\n");
return FALSE;
}
flock($fp, LOCK_EX);
fputs($fp, $message);
fclose($fp);

return TRUE;
}

function strip_comment($address)
{
$comment = "\\([^()]*\\)";
while (ereg($comment, $address)) {
$address = ereg_replace($comment, "", $address);
}

return $address;
}

function get_address($address)
{
$address = ereg_replace("([ \t\r\n])+", "", $address);
$address = ereg_replace("^.*<(.+)>.*$", "\\1", $address);

return $address;
}

function smtp_debug($message)
{
if ($this->debug) {
echo $message."<br>";
}
}

function get_attach_type($image_tag) { //

$filedata = array();

$img_file_con=fopen($image_tag,"r");
unset($image_data);
while ($tem_buffer=AddSlashes(fread($img_file_con,filesize($image_tag))))
$image_data.=$tem_buffer;
fclose($img_file_con);

$filedata[&#39;context&#39;] = $image_data;
$filedata[&#39;filename&#39;]= basename($image_tag);
$extension=substr($image_tag,strrpos($image_tag,"."),strlen($image_tag)-strrpos($image_tag,"."));
switch($extension){
case ".gif":
$filedata[&#39;type&#39;] = "image/gif";
break;
case ".gz":
$filedata[&#39;type&#39;] = "application/x-gzip";
break;
case ".htm":
$filedata[&#39;type&#39;] = "text/html";
break;
case ".html":
$filedata[&#39;type&#39;] = "text/html";
break;
case ".jpg":
$filedata[&#39;type&#39;] = "image/jpeg";
break;
case ".tar":
$filedata[&#39;type&#39;] = "application/x-tar";
break;
case ".txt":
$filedata[&#39;type&#39;] = "text/plain";
break;
case ".zip":
$filedata[&#39;type&#39;] = "application/zip";
break;
default:
$filedata[&#39;type&#39;] = "application/octet-stream";
break;
}


return $filedata;
}
 }
?>

<?php

$smtpserver = "smtp.163.com";//SMTP服务器
$smtpserverport =25;//SMTP服务器端口
$smtpusermail = "caowlong163@163.com";//SMTP服务器的用户邮箱
$smtpemailto = "caowlong@qq.com";//发送给谁
$smtpuser = "caowlong163@163.com";//SMTP服务器的用户帐号
$smtppass = "XXX";//SMTP服务器的用户密码
$mailsubject = "PHP100测试邮件系统";//邮件主题
$mailbody = "<h1>你的用户名是张三,密码是11111 </h1>";//邮件内容
$mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件
$smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);
$smtp->debug = true;//是否显示发送的调试信息
$smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype);
?>
ログイン後にコピー

 以上就是邮件操作类的内容,更多相关内容请关注PHP中文网(www.php.cn)!


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ファイルへのパスが正しくありません。現在、オペレーティング システムはこのアプリケーションを実行するように構成されていません

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

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

Windows 11 のリモート メール スロット プロトコルに別れを告げる Windows 11 のリモート メール スロット プロトコルに別れを告げる Apr 14, 2023 pm 10:28 PM

私たちは最近、Microsoft が最新のオペレーティング システムである Windows 11 に追加する予定の多くの機能について話してきました。しかし、Microsoft が何も追加せず、何も取り返さないとは思わないでください。実際、ソフトウェア大手はかなりの数の古い機能を削除し始めました。 Windows 12 のリリースに先立って MSDT 機能を廃止する計画を発表した後、レドモンドの開発者にさらなる悪い知らせが届きました。実際には、リモート メール スロットのレガシー ツールについて話しています。あなたが実際にこれを知りたいと言うとき、私たちを信じてください。 Microsoft は、ビルド 25314 でこの機能の非推奨を開始しました。ほんの数日前、Microsoft が新しい Canary チャネルでビルド 25314 をリリースしたことを覚えていると思います。上記のバージョンには多くの新機能が含まれています

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

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

Outlookメールが送信トレイに残っている問題を修正する方法 Outlookメールが送信トレイに残っている問題を修正する方法 May 01, 2023 am 10:01 AM

最近、多くのユーザーが Outlook メールが送信トレイに残っている問題を報告しています。何度か電子メールの送信を試みても、問題は解決されませんでした。この問題が発生して送信トレイ フォルダーを確認すると、メッセージがそこに残っています。 Outlook の送信トレイに電子メールが滞留する考えられる理由: 電子メール内の添付ファイルがサイズ制限を超えているため、送信プロセスが遅くなります。メール サーバーでの Outlook アカウント認証の問題 Outlook またはオフライン Outlook のメール サーバーの送受信設定が正しくありません。 Outlook データ ファイルが他のソフトウェアで使用されています。ウイルス対策ソフトウェアは送信メールをスキャンします。この問題が気になってメールを送信できない場合は、

Windows 11 および Windows 10 用の最新の Outlook アプリを含むパブリック プレビューが間もなく公開されます。 Windows 11 および Windows 10 用の最新の Outlook アプリを含むパブリック プレビューが間もなく公開されます。 May 09, 2023 am 08:07 AM

Windows 11 のネイティブ アプリの更新の一環として、Microsoft は新しい Outlook をリリースする予定です。このアプリは一から構築され、現在プレビューの準備が進められており、おそらく Microsoft の Windows 11 ハイブリッド イベント中に発表される予定です。このプロジェクトは「ProjectMonarch」と呼ばれ、この新しい Outlook は 1 年以上かけて開発されています。これは、メールやカレンダーなどの既存のすべての Windows 電子メール クライアントとデスクトップ バージョンの Outlook を統合することを目的とした Web アプリの再起動です。 Microsoft は、OutlookOne によって、ユーザーがさまざまなデスクトップ プラットフォーム間で電子メールを管理できるようにしたいと考えています。アクセス方法はたくさんあります

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

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

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

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

See all articles