⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mail.php

📁 a short sketch about linux syntex lines.
💻 PHP
字号:
<?php/*邮件发送类showin@2008-8-14 modify支持base64验证登录*/class Easy_Mail{	public $server = array();	//smtp服务器	public $subject = 'subject';	//标题	public $to = array();	//接受者邮箱数组	public $htmlbody = '';	public $textbody = '';	public $debug = true;	public $indexno = 0;	public $ErrorInfo = array();	public $auth = true;	public $fromname = '技术部测试';	public $mailtype = 'HTML';	public $charset ='GB2312';	public $limit = 100;	/*	邮件发送	*/	public function sendMail(){		if(!$fp = fsockopen ( $this->server[$this->indexno]['server'], $this->server[$this->indexno]['port'], $errno, $error, 20) ) {			$this->errorlog('SMTP', "($this->server[$this->indexno]['server']:$this->server[$this->indexno]['port']) CONNECT - Unable to connect to the SMTP server", 0);		}		stream_set_blocking($fp, true);		$lastmessage = fgets($fp, 512);		if(substr($lastmessage, 0, 3) != '220') {			$this->errorlog('SMTP', "$this->server[$this->indexno]['server']:$this->server[$this->indexno]['port'] CONNECT - $lastmessage", 0);		}		fputs($fp, ($mail['auth'] ? 'EHLO' : 'HELO')." discuz\r\n");		$lastmessage = fgets($fp, 512);		if(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250) {			$this->errorlog('SMTP', "($mail[server]:$mail[port]) HELO/EHLO - $lastmessage", __LINE__);		}		while(1) {			if(substr($lastmessage, 3, 1) != '-' || empty($lastmessage)) {				break;			}			$lastmessage = fgets($fp, 512);		}		if($this->auth) {			fputs($fp, "AUTH LOGIN\r\n");			$lastmessage = fgets($fp, 512);			if(substr($lastmessage, 0, 3) != 334) {				$this->errorlog('SMTP', "($this->server[$this->indexno]['server']:$this->server[$this->indexno]['port']) AUTH LOGIN - $lastmessage", __LINE__);			}			fputs($fp, base64_encode(trim($this->server[$this->indexno]['user']))."\r\n");			$lastmessage = fgets($fp, 512);			if(substr($lastmessage, 0, 3) != 334) {				$this->errorlog('SMTP', "($this->server[$this->indexno]['server']:$this->server[$this->indexno]['port']) USERNAME - $lastmessage", __LINE__);			}			fputs($fp, base64_encode(trim($this->server[$this->indexno]['pass']))."\r\n");			$lastmessage = fgets($fp, 512);			if(substr($lastmessage, 0, 3) != 235) {				$this->errorlog('SMTP', "($this->server[$this->indexno]['server']:$this->server[$this->indexno]['port']) PASSWORD - $lastmessage", __LINE__);			}			$email_from = trim($this->server[$this->indexno]['from']);		}		fputs($fp, "MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $email_from).">\r\n");		$lastmessage = fgets($fp, 512);		if(substr($lastmessage, 0, 3) != 250) {			fputs($fp, "MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $email_from).">\r\n");			$lastmessage = fgets($fp, 512);			if(substr($lastmessage, 0, 3) != 250) {				$this->errorlog('SMTP', "($this->server[$this->indexno]['server']:$this->server[$this->indexno]['port']) MAIL FROM - $lastmessage", __LINE__);			}		}		$email_tos = $this->to;		foreach($email_tos 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);					$this->errorlog('SMTP', "($this->server[$this->indexno]['server']:$this->server[$this->indexno]['port']) RCPT TO - $lastmessage", 0);				}			}		}		$headers = '';		$maildelimiter = "\r\n";		$subject = '=?'.$this->charset.'?B?'.base64_encode(str_replace("\r", '', str_replace("\n", '', $this->subject))).'?=';		$email_message = chunk_split(base64_encode(str_replace("\r\n.", " \r\n..", str_replace("\n", "\r\n", str_replace("\r", "\n", str_replace("\r\n", "\n", str_replace("\n\r", "\r", $this->htmlbody)))))));		$email_from = '=?'.$this->charset.'?B?'.base64_encode($this->fromname)."?= <".$this->server[$this->indexno]['from'].">";		if ($this->mailtype == 'HTML' ){			$headers = "From: $email_from{$maildelimiter}X-Priority: 3{$maildelimiter}X-Mailer: vodcms.com! {$maildelimiter}MIME-Version: 1.0{$maildelimiter}Content-type: text/html; charset=".$this->charset."{$maildelimiter}Content-Transfer-Encoding: base64{$maildelimiter}";		}		fputs($fp, "DATA\r\n");		$lastmessage = fgets($fp, 512);		if(substr($lastmessage, 0, 3) != 354) {			$this->errorlog('SMTP', "($this->server[$this->indexno]['server']:$this->server[$this->indexno]['port']) DATA - $lastmessage", 99);		}		$headers .= 'Message-ID: <'.gmdate('YmdHs').'.'.substr(md5($email_message.microtime()), 0, 6).rand(100000, 999999).'@'.$_SERVER['HTTP_HOST'].">{$maildelimiter}";		fputs($fp, "Date: ".gmdate('r')."\r\n");		fputs($fp, "To: ".$email_to."\r\n");		fputs($fp, "Subject: ".$subject."\r\n");		fputs($fp, $headers."\r\n");		fputs($fp, "\r\n\r\n");		fputs($fp, "$email_message\r\n.\r\n");		$lastmessage = fgets($fp, 512);		if(substr($lastmessage, 0, 3) != 250) {			$this->errorlog('SMTP', "($this->server[$this->indexno]['server']:$this->server[$this->indexno]['port']) END - $lastmessage", __LINE__);		}		fputs($fp, "QUIT\r\n");		return true;	}	public function errorlog($message, $error, $line=0){		if ($this->debug == true){			echo $message. $error.'line:'.$line.'<br />';		}else{			$this->ErrorInfo = $message.$error.'line:'.$line.'<br />';			$this->indexno = $this->indexno + 1;	//发送失败尝试使用下一组服务器发送			if ($this->server[$this->indexno]){	//若服务器存在就发送				$this->sendmail();			}		}	}}/*$mail = new smtpMailer;$mail->server[] = array(	'server'=>'mail.gol.com',	'port' => 587 ,	'user' => 'ko-wa.inter.n@gol.com',	'pass' => 'bSrfpdY%',	'from'=> 'b2b@made-in-china.co.jp');$mail->server[] = array(	'server'=>'mail.163.com',	'port' => 25 ,	'user' => 'zangguoping@163.com',	'pass' => 'yzmbhack<>?',	'from'=> 'zangguoping@163.com');$mail->to = array('10514873@qq.com', '24498936@qq.com','jin@made-in-china.co.jp','zangguoping@163.com');$mail->subject = '测试幽默';$mail->htmlbody = '测试的邮件内容';$mail->sendmail();*/?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -