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 ...
1.3 应用常用开发工具开发PHP程序 23 实例018 应用Dreamweaver开发PHP程序 24 实例019 应用Eclipse开发PHP程序 25 实例020 应用PHPEditor开发PHP程序 27 实例021 应用UltraEdit开发PHP程序 29 实例022 ...
PHP是能让你生成动态网页的工具之一。PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP。 PHP代表:超文本预处理器(PHP: Hypertext Preprocessor)。PHP是完全免费的,不用...
站内邮件 = 强大的站内邮件,会员与会员之间可发送站内邮件聊天沟通 在线充值 = 支持支付宝,微信,网银等在线充值 广告管理 = 多功能型广告系统,支持右下角广告,对联广告,浮窗广告等 友链链接 = 支持文字型和...
集成了 采集类 分页类 RBAC类 插件类 数据库备份类 安装类 PHP发送邮件类 等等....举个简单例子比如模板操作 加载Jquery只需要一句 LoadGoogleJquery就可以在线载入...引入css/js/images 只需要__AIR__后面跟上css/...
包含有中文语言包,可自行处理. OpenX是一个采用PHP开发的横幅广告管理与跟踪系统,适合中大型网站...当前它能够管理每个广告主拥有的多种任何尺寸横幅广告,按天查看,详细和概要统计并通过电子邮件发送报表给广告主。
邮件发送使用的phpmailer类,很不错的一个邮件发送类。 欢迎一切非人生攻击的谩骂和指责,不过最好是建议啦,哈哈。 有很多地方需要慢慢完善,事情太多,时间不够... 6、联系我,Come on.. 我爱好交朋友,渴望向大家...
电子邮件:建立自己的邮件中心,方便的给同事或客户发送电子邮件,消除传统信函效率低,成本高的弊端。支持群发。 手机短信:可以方便的给同事、朋友、客户等发短信,即使员工不在单位也可以保持时时沟通,并建立...
PHP 多语法荧光笔 phpMSH 是一种语法高亮工具,可以“美化”PHP... 如果您愿意,请将带有示例的关键字和字符串规则列表发送给我,然后通过电子邮件发送给我。 我将创建一个新类来支持您喜欢的语言并将它们添加到包中。