- class MailCls{
- private $mEmails;
- function setEmailInfo( $emails ){
- if( is_array( $emails ) ){
- $this->mEmails['email_to'] = $emails['email_to'];
- #对邮件标题进行处理
- if( isset( $emails['email_subject'] ) || !empty($emails['email_subject'])) {
- eval("$email_subject = "".$emails['email_subject']."";");
- $email_subject = str_replace(" ", '', str_replace(" ", '', $emails['email_subject'] ));
- $this->mEmails['email_subject'] = $emails['email_subject'];
- }
- #对邮件内容进行处理
- if( isset( $emails['email_message']) || !empty($emails['email_message'])) {
- eval("$email_message = "".$emails['email_message']."";");
- $emails['email_message'] = str_replace(" .", " ..", str_replace(" ", " ", str_replace(" ", " ", str_replace(" ", " ", str_replace(" ", " ", $emails['email_message'])))));
- $this->mEmails['email_message'] = $emails['email_message'];
- }
- #对邮件来源进行处理
- if( isset($emails['email_from']) || !empty($emails['email_from']))
- $this->mEmails['email_from'] = $emails['email_from'];
- else
- $this->mEmails['email_from'] = '<'.$_SERVER['SERVER_ADMIN'].'>';
- }
- }
- function getEmails( $elements ){
- if( isset( $elements ) || !empty( $elements ))
- return $this->mEmails[$elements];
- else
- return $this->mEmails;
- }
- function __destruct(){
- unset( $this );
- }
- }
- class sendMail extends MailCls{
- private $mMailCfg;
- function __construct( $mailcfg ){
- if(is_array( $mailcfg ))
- $this->mMailCfg = $mailcfg;
- }
- #发送邮件函数
- function sendMails( ){
- if(!$fp = fsockopen($this->mMailCfg['server'], $this->mMailCfg['port'], $errno, $errstr, 30)) {
- errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) CONNECT - Unable to connect to the SMTP server, please check your "mail_config.php".", 0);
- }
- stream_set_blocking($fp, true);
- $lastmessage = fgets($fp, 512);
- if(substr($lastmessage, 0, 3) != '220') {
- errorlog('SMTP', "$this->mMailCfg[server]:$this->mMailCfg[port] CONNECT - $lastmessage", 0);
- }
- fputs($fp, ($this->mMailCfg['auth'] ? 'EHLO' : 'HELO')." hoodong ");
- $lastmessage = fgets($fp, 512);
- if(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250) {
- errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) HELO/EHLO - $lastmessage", 0);
- }
- while(1) {
- $lastmessage = fgets($fp, 512);
- if(substr($lastmessage, 3, 1) != '-' || empty($lastmessage)) {
- break;
- }
- }
- if($this->mMailCfg['auth']) {
- fputs($fp, "AUTH LOGIN ");
- $lastmessage = fgets($fp, 512);
- if(substr($lastmessage, 0, 3) != 334) {
- errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) AUTH LOGIN - $lastmessage", 0);
- }
- fputs($fp, base64_encode($this->mMailCfg['auth_username'])." ");
- $lastmessage = fgets($fp, 512);
- if(substr($lastmessage, 0, 3) != 334) {
- errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) USERNAME - $lastmessage", 0);
- }
- fputs($fp, base64_encode($this->mMailCfg['auth_password'])." ");
- $lastmessage = fgets($fp, 512);
- if(substr($lastmessage, 0, 3) != 235) {
- errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) PASSWORD - $lastmessage", 0);
- }
- $email_from = $this->mMailCfg['from'];
- }
- fputs($fp, "MAIL FROM: ".preg_replace("/.*<(.+?)>.*/", "\\1", $this->getEmails('email_from'))." ");
- $lastmessage = fgets($fp, 512);
- if(substr($lastmessage, 0, 3) != 250) {
- fputs($fp, "MAIL FROM: <".preg_replace("/.*<(.+?)>.*/", "\\1", $this->getEmails('email_from'))."> ");
- $lastmessage = fgets($fp, 512);
- if(substr($lastmessage, 0, 3) != 250) {
- errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) MAIL FROM - $lastmessage", 0);
- }
- }
- foreach(explode(',', $this->getEmails('email_to')) as $to_user) {
- $to_user = trim( $to_user );
- if( $to_user ) {
- fputs( $fp, "RCPT TO: $to_user " );
- $lastmessage = fgets( $fp, 512 );
- if(substr($lastmessage, 0, 3) != 250) {
- fputs($fp, "RCPT TO: <$to_user> ");
- $lastmessage = fgets($fp, 512);
- errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) RCPT TO - $lastmessage", 0);
- }
- }
- }
- fputs($fp, "DATA ");
- $lastmessage = fgets($fp, 512);
- if(substr($lastmessage, 0, 3) != 354) {
- errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) DATA - $lastmessage", 0);
- }
- fputs($fp, "To: ".$this->getEmails('email_to')." From: ".$this->getEmails('email_from')." Subject: ".str_replace(" ", ' ', $this->getEmails('email_subject'))." ".$this->getEmails('email_message')." . ");
- fputs($fp, "QUIT ");
- }
- function getEmailCfg( $elements ){
- if(isset( $elements ) || !empty( $elements ))
- return $this->mMailCfg[$elements];
- else
- return $this->mMailCfg;
- }
- function __destruct(){
- unset($fp);
- unset($this);
- }
- }
- /*@调用演示.请设置下面信息@*/
- #######################################################################
- $emails = array(
- 'email_to' => 'injection.mail@gmail.com', #收件人地址
- 'email_subject' => 'test', #邮件标题
- 'email_message' => 'ksadasdasdasdsadasfafdasfdsaff', #邮件正文
- 'email_from' => ' <injection.mail@gmail.com>', #邮件来源
- );
- ##########################################################################
- $mailcfg['server'] = 'smtp.gmail.com'; #smtp服务器地址
- $mailcfg['port'] = '25'; #smtp端口
- $mailcfg['auth'] = 1; #显示作者
- $mailcfg['from'] = 'gmail <injection.mail@gmail.com>'; #发件人地址
- $mailcfg['auth_username'] = 'injection_at@hotmail.com'; #发件人邮箱
- $mailcfg['auth_password'] = '12345677'; #发件人邮箱密码
- #调用:
- $sm = new sendMail( $mailcfg );
- $sm->setEmailInfo( $emails );
- $sm->sendMails();
- //该片段来自于http://www.codesnippet.cn/detail/10122012886.html
来源: http://www.codesnippet.cn/detail/10122012886.html