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!'); } } }
相关推荐
当我们需要在PHP应用中实现邮件发送功能时,通常会利用PHP的内置函数或者专门的邮件发送类。在这个主题中,我们将深入探讨"PHP邮件发送类"的相关知识点,包括其工作原理、常见库的使用以及如何自定义此类。 首先,...
"php 邮件发送类"是一个专门用于通过PHP发送邮件的工具,它可以简化邮件发送过程,使得开发者能够方便地与163和QQ等常见邮箱服务提供商进行通信。在这个场景中,我们使用的类库很可能是PHPMailer,一个广泛使用的...
`class.phpmailer.php`是PHPMailer的核心类文件,它包含了处理邮件发送的所有功能。这个类提供了丰富的选项来配置邮件,如设置发件人、收件人、抄送人、密送人、主题、邮件正文、附件等。此外,它还支持HTML格式的...
综上所述,这个"PHP邮件发送类"是一个强大且灵活的工具,可以帮助开发者高效地处理电子邮件的发送需求。通过理解和应用这些知识点,你可以轻松地构建自己的邮件系统,提高工作效率,同时提供更好的用户体验。
PHP提供了多种方法来实现这个功能,其中一种是通过使用邮件发送类。本篇文章将详细探讨如何使用PHP进行邮件发送,特别是那些带有附件的邮件。 首先,我们需要了解PHP内置的`mail()`函数。这是一个简单的邮件发送...
我们将基于PHP的`PHPMailer`库进行讨论,这是一个强大且广泛使用的邮件发送类。 `PHPMailer`是一个开源的PHP类库,它提供了丰富的功能,包括SMTP验证、HTML邮件、附件支持以及多种错误处理。使用`PHPMailer`可以...
总的来说,这个“完整版php邮件发送类”是一个强大的工具,能够满足多种邮件发送需求,无论是简单的日常通信还是复杂的商业应用。它通过封装和简化邮件发送的过程,使开发者能够专注于代码的其他逻辑,而无需担心...
PHPMailer是一个强大的邮件发送库,它支持SMTP验证,可以发送HTML邮件,甚至可以添加附件,极大地增强了PHP处理邮件的能力。 描述中提到“利用PHPMailer批量发送附件内容”,这意味着我们可以利用PHPMailer的功能,...
在PHP开发中,有时我们需要通过程序来发送电子邮件,例如通知用户、发送验证码或者分享文件等。`PHPMailer`是一个广泛使用的...这个`send_mail`文件可以作为一个实用工具,帮助你在项目中轻松地处理邮件发送的需求。
总结,`PHP文件上传和邮件发送的类`是一个实用的工具,它简化了开发过程中与文件上传和邮件发送相关的复杂操作,让开发者能更专注于业务逻辑,提高开发效率。同时,它还提供了更好的用户体验,如支持HTML邮件和无需...
总的来说,"phpemail邮件发送demo"是一个实用的工具,它涵盖了PHP邮件发送的各个方面,通过学习和实践,你可以掌握使用PHP进行邮件发送的技巧,从而提升你的开发技能。记得在使用时,根据你的具体需求和邮件服务提供...
PHP邮件发送类就是一种工具,它封装了邮件发送的相关逻辑,使得开发者能够更方便地进行邮件通信。本文将详细讲解PHP邮件发送类及其工作原理。 首先,我们需要了解PHP的mail()函数,这是PHP内置的用于发送邮件的函数...
"非常好用的php发送邮件类" 提供了一种高效、简便的方式来实现PHP中的邮件发送。 这个邮件类很可能基于PHPMailer,这是一个开源且流行的PHP邮件处理库。PHPMailer提供了丰富的功能,包括SMTP验证、HTML邮件、附件...
**PHP5.0邮件发送类**是用于在PHP5.0环境下实现邮件发送和接收功能的一个类库。这个类库通常基于PHPMailer,一个广泛使用的开源邮件处理工具,其版本为**phpMailer_v2.1.0beta2**。通过使用PHPMailer,开发者可以...
在IT行业中,PHP是一种广泛使用的服务器端脚本语言,尤其在构建动态网站和Web应用程序时。...通常,这样的工具可能会提供邮件发送统计、错误报告、日志查看等功能,帮助开发者管理和优化邮件发送流程。
2. **创建PHPMailer类**:在项目中创建一个名为`MailSender.php`的文件,导入PHPMailer并创建一个类来封装邮件发送的逻辑。 ```php require 'vendor/autoload.php'; use PHPMailer\PHPMailer\PHPMailer; use ...
总的来说,PHPMailer_v5.1是一个强大且灵活的邮件发送工具,它提供了丰富的功能,帮助开发者轻松地处理PHP的邮件发送任务。只需根据自己的需求配置参数,就可以实现各种复杂的邮件发送需求。记得在使用过程中,根据...
接下来,创建一个名为`GmailMailer.php`的PHP类,该类将封装邮件发送的逻辑: ```php class GmailMailer { private $mail; public function __construct($fromEmail, $fromName, $gmailUsername, $gmailPassword...
PHPMailer支持多种邮件发送协议,包括SMTP、SENDMAIL和PHP's mail()函数,因此你可以根据服务器配置选择最适合的发送方式。 PHPMailer的核心特性包括: 1. **SMTP验证**:支持SMTP身份验证,可以使用用户名和密码...