socket方式发送邮件的类-PHP源码
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'] = '';
}
}
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: 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: ");
$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' => '', #邮件来源
);
##########################################################################
$mailcfg['server'] = 'smtp.gmail.com'; #smtp服务器地址
$mailcfg['port'] = '25'; #smtp端口
$mailcfg['auth'] = 1; #显示作者
$mailcfg['from'] = 'gmail'; #发件人地址
$mailcfg['auth_username'] = 'injection_at@hotmail.com'; #发件人邮箱
$mailcfg['auth_password'] = '12345677'; #发件人邮箱密码
#调用:
$sm = new sendMail( $mailcfg );
$sm->setEmailInfo( $emails );
$sm->sendMails();
/php/33376.htmlwww.phpzy.comtrue/php/33376.htmlTechArticlesocket方式发送邮件的类-PHP源码 class MailCls{ private $mEmails; function setEmailInfo( $emails ){ if( is_array( $emails ) ){ $this->mEmails[email_to] = $emails[email_to]; #对邮件标题进行处理 if( isset( $emails[email_subje...
PHP之友评论