class email { var $mail; var $recipient; var $title; var $content; var $sender; var $delimiter; var $header; var $charset; function __construct(&$mail) { $this->email($mail); } function email(&$mail) { $this->mail = $mail; $this->charset = CHARSET; } function send($recipient, $title, $content, $sender = '') { if($this->mail['silent']) { error_reporting(0); } $tousers = array(); foreach(explode(',', $recipient) as $touser) { $tousers[] = preg_match('/^(.+?) \<(.+?)\>$/', $touser, $to) ? '=?'.$this->charset.'?B?'.base64_encode($to[1])."?= <$to[2]>" : $touser; } $this->recipient = implode(',', $tousers); $this->title = '=?'.$this->charset.'?B?'.base64_encode(str_replace(array("\r", "\n"), '', $title)).'?='; $this->content = chunk_split(base64_encode(str_replace(array("\n\r", "\r\n", "\r", "\n", "\r\n."), array("\r", "\n", "\n", "\r\n", " \r\n.."), $content))); $this->delimiter = $this->mail['delimiter'] == 1 ? "\r\n" : ($this->mail['delimiter'] == 2 ? "\r" : "\n"); $this->sender = preg_match('/^(.+?) \<(.+?)\>$/', $sender, $from) ? '=?'.$this->charset.'?B?'.base64_encode($from[1])."?= <$from[2]>" : $sender; $this->header = "From: $this->sender{$this->delimiter}". "X-Priority: 3{$this->delimiter}". "X-Mailer: Email{$this->delimiter}". "MIME-Version: 1.0{$this->delimiter}". "Content-type: text/plain; charset={$this->charset}{$this->delimiter}". "Content-Transfer-Encoding: base64{$this->delimiter}"; $this->mail['port'] = $this->mail['port'] ? $this->mail['port'] : 25; if($this->mail['type'] == 1) { return $this->sendMail(); } elseif($this->mail['type'] == 2) { return $this->socketSmtp(); } elseif($this->mail['type'] == 3) { return $this->phpSmtp(); } } function sendMail() { if(!function_exists('mail')) { return array('status' => 1, 'error' => 'SendMail\tFunction "mail()" NOT exists!'); } if(@mail($this->recipient, $this->title, $this->content, $this->header)) { return array('status' => 0); } else { return array('status' => 2, 'error' => 'PHP Mail\tPHP sendmail error!'); } } function socketSmtp() { $error = "({$this->mail[server]}:{$this->mail[port]})"; if(!$fp = fsockopen($this->mail['server'], $this->mail['port'], $errno, $errstr, 30)) { return array('status' => 4, 'error' => "SMTP\t$error CONNECT - Unable to connect to the SMTP server"); } stream_set_blocking($fp, true); $lastmessage = fgets($fp, 512); if(substr($lastmessage, 0, 3) != '220') { return array('status' => 5, 'error' => "SMTP\t$error CONNECT - $lastmessage"); } fputs($fp, ($this->mail['auth'] ? 'EHLO' : 'HELO')." hello\r\n"); $lastmessage = fgets($fp, 512); if(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250) { return array('status' => 6, 'error' => "SMTP\t$error HELO/EHLO - $lastmessage"); } while(1) { if(substr($lastmessage, 3, 1) != '-' || empty($lastmessage)) { break; } $lastmessage = fgets($fp, 512); } if($this->mail['auth']) { fputs($fp, "AUTH LOGIN\r\n"); $lastmessage = fgets($fp, 512); if(substr($lastmessage, 0, 3) != 334) { return array('status' => 7, 'error' => "SMTP\t$error AUTH LOGIN - $lastmessage"); } fputs($fp, base64_encode($this->mail['auth_username'])."\r\n"); $lastmessage = fgets($fp, 512); if(substr($lastmessage, 0, 3) != 334) { return array('status' => 8, 'error' => "SMTP\t$error USERNAME - $lastmessage"); } fputs($fp, base64_encode($this->mail['auth_password'])."\r\n"); $lastmessage = fgets($fp, 512); if(substr($lastmessage, 0, 3) != 235) { return array('status' => 9, 'error' => "SMTP\t$error PASSWORD - $lastmessage"); } $this->sender = $this->mail['auth_from']; } fputs($fp, "MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $this->sender).">\r\n"); $lastmessage = fgets($fp, 512); if(substr($lastmessage, 0, 3) != 250) { fputs($fp, "MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $this->sender).">\r\n"); $lastmessage = fgets($fp, 512); if(substr($lastmessage, 0, 3) != 250) { return array('status' => 10, 'error' => "SMTP\t$error MAIL FROM - $lastmessage"); } } foreach(explode(',', $this->recipient) as $touser) { $touser = trim($touser); if($touser) { fputs($fp, "RCPT TO: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $touser).">\r\n"); $lastmessage = fgets($fp, 512); if(substr($lastmessage, 0, 3) != 250) { fputs($fp, "RCPT TO: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $touser).">\r\n"); $lastmessage = fgets($fp, 512); return array('status' => 11, 'error' => "SMTP\t$error RCPT TO - $lastmessage"); } } } fputs($fp, "DATA\r\n"); $lastmessage = fgets($fp, 512); if(substr($lastmessage, 0, 3) != 354) { return array('status' => 12, 'error' => "SMTP\t$error DATA - $lastmessage"); } $this->header .= 'Message-ID: <'.gmdate('YmdHs').'.'.substr(md5($this->content.microtime()), 0, 6).rand(100000, 999999).'@'.$_SERVER['HTTP_HOST'].">{$this->delimiter}"; fputs($fp, "Date: ".gmdate('r')."\r\n"); fputs($fp, "To: ".$this->recipient."\r\n"); fputs($fp, "Subject: ".$this->title."\r\n"); fputs($fp, $this->header."\r\n"); fputs($fp, "\r\n\r\n"); fputs($fp, "$this->content\r\n.\r\n"); $lastmessage = fgets($fp, 512); if(substr($lastmessage, 0, 3) != 250) { return array('status' => 13, 'error' => "SMTP\t$error END - $lastmessage"); } fputs($fp, "QUIT\r\n"); return array('status' => 0); } function phpSmtp() { if(!function_exists('mail')) { return array('status' => 1, 'error' => 'SendMail\tFunction "mail()" NOT exists!'); } ini_set('SMTP', $this->mail['server']); ini_set('smtp_port', $this->mail['port']); ini_set('sendmail_from', $this->sender); if(@mail($this->recipient, $this->title, $this->content, $this->header)) { return array('status' => 0); } else { return array('status' => 3, 'error' => 'PHP SMTP\tPHP smtp mail error!'); } } }
相关推荐
class.phpmailer.php和class.smtp.php
NULL 博文链接:https://hudeyong926.iteye.com/blog/693380
NULL 博文链接:https://zl-go.iteye.com/blog/1893866
主要有视频播放器插件、阿里云OSS存储、支付宝即时到账接口、Redis缓存、PHPmailer批量发送邮件、Monolog 日志工具、ECharts图表库、PDO预处理、PHP-FFmpeg、WebSocket、无限级分类
SMTP4PHP是PHP类的集合,专用于快速,轻松地编写和发送多部分/混合的电子邮件消息,带有或不带有嵌入式图像和/或附件。
本书展示一个完整网站的设计和实现过程,详细地介绍动态网页设计和制作的技术和相关...8.3.3 PHP发送电子邮件的方式 8.4 正则表达式 8.4.1 正则表达式简介 8.4.2 常用表单项验证 8.4.3 正则表达式的法则 参考文献
mp3 歌曲名称 调整了图片 增加了文件编码识别 支持直接编辑 UTF8 文件 支持新建UTF8 文件 直接显示 图片大小 细节调整 BUG 修复了一些 //2.5更新----- 修正了文件 大小计算 调整了 探针 增加了 电子邮件发送功能 ...
21.3应用PHP发送和接收电子邮件 PHP与XML技术(教学录像:31分17秒) 22.1XML的概述 22.2XML语法 22.3在PHP中创建XML文档 22.4SimpleXML 22.5动态创建XML文档 PHP与LDAP技术(教学录像:25分27秒) 23.1LDAP简介 ...
21.3应用PHP发送和接收电子邮件 PHP与XML技术(教学录像:31分17秒) 22.1XML的概述 22.2XML语法 22.3在PHP中创建XML文档 22.4SimpleXML 22.5动态创建XML文档 PHP与LDAP技术(教学录像:25分27秒) 23.1LDAP简介 ...
Azine电子邮件捆绑 ...与诸如mailgun.com之类的事务电子邮件服务配合使用非常好。 目录 使您的电子邮件在网络视图和网络预览中可用 配置网络视图和网络预览 实现WebViewServiceInterface 更新你的数据库
1.6 几种开发工具的介绍 20 1.6.1 Vi及Vim 20 1.6.2 Eclipse+PHPEclipse插件 21 1.6.3 UltraEdit 21 1.6.4 EditPlus 22 1.6.5 支持PHP的IDE环境 22 1.7 小结 23 第2章 PHP的基础语法 24 2.1 语言构成与工作原理 24 ...
PHP是能让你生成动态网页的工具之一。PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP。 PHP代表:超文本预处理器(PHP: Hypertext Preprocessor)。PHP是完全免费的,不用...
站内邮件 = 强大的站内邮件,会员与会员之间可发送站内邮件聊天沟通 在线充值 = 支持支付宝,微信,网银等在线充值 广告管理 = 多功能型广告系统,支持右下角广告,对联广告,浮窗广告等 友链链接 = 支持文字型和...
包含有中文语言包,可自行处理. OpenX是一个采用PHP开发的横幅广告管理与跟踪系统,适合中大型网站...当前它能够管理每个广告主拥有的多种任何尺寸横幅广告,按天查看,详细和概要统计并通过电子邮件发送报表给广告主。
集成了 采集类 分页类 RBAC类 插件类 数据库备份类 安装类 PHP发送邮件类 等等....举个简单例子比如模板操作 加载Jquery只需要一句 LoadGoogleJquery就可以在线载入...引入css/js/images 只需要__AIR__后面跟上css/...
邮件发送使用的phpmailer类,很不错的一个邮件发送类。 欢迎一切非人生攻击的谩骂和指责,不过最好是建议啦,哈哈。 有很多地方需要慢慢完善,事情太多,时间不够... 6、联系我,Come on.. 我爱好交朋友,渴望向大家...
电子邮件:建立自己的邮件中心,方便的给同事或客户发送电子邮件,消除传统信函效率低,成本高的弊端。支持群发。 手机短信:可以方便的给同事、朋友、客户等发短信,即使员工不在单位也可以保持时时沟通,并建立...
PHP 多语法荧光笔 phpMSH 是一种语法高亮工具,可以“美化”PHP... 如果您愿意,请将带有示例的关键字和字符串规则列表发送给我,然后通过电子邮件发送给我。 我将创建一个新类来支持您喜欢的语言并将它们添加到包中。
16、邮件功能 支持邮件设置,自动发送邮件,邮件群发等17、图形并茂的统计工具 网钛商城系统内置了多种数字图形统计工具(饼状图、柱状图、折线图),为您的商城经营提供准确的数据依据,并集成了CNZZ站长统计等...