socket方式发送邮件的类
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();
로그인 후 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사
R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
스플릿 소설을이기는 데 얼마나 걸립니까?
1 몇 달 전
By DDD
R.E.P.O. 파일 저장 위치 : 어디에 있고 그것을 보호하는 방법은 무엇입니까?
1 몇 달 전
By DDD
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
어 ass 신 크리드 그림자 : 조개 수수께끼 솔루션
1 몇 주 전
By DDD

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제
Gmail 이메일의 로그인 입구는 어디에 있나요?
7390
15


자바 튜토리얼
1630
14


Cakephp 튜토리얼
1357
52


라라벨 튜토리얼
1268
25


PHP 튜토리얼
1216
29

