socket发邮件

利用socket发送邮件,首先要开启apache支持的服务

用户名跟密码都是经过64位编码的。

<?php
/**
 * 公用函数库
 *
 */
include_once Q::ini('app_config/ROOT_DIR').'/lib/mail/class.phpmailer.php';
include_once Q::ini('app_config/ROOT_DIR').'/lib/mail/class.smtp.php';
class Helper_Mail {
    /**
     * 发送邮件
     *
     * @param 目标地址    $to
     * @param 邮件标题    $title
     * @param 邮件正文    $body
     * @return boolean
     */
    static function sendmail($to,$title,$body)
    {
        $mail_config = Q::ini('appini/mail');
        $mail    = new PHPMailer();
        $mail->IsSMTP();
        $mail->SMTPAuth   = true;               // enable SMTP authentication
        $mail->SMTPSecure = "";                 // sets the prefix to the servier
        $mail->Host       = $mail_config['smtpHost'];      // sets GMAIL as the SMTP server
        $mail->Port       = $mail_config['smtpPort'];               // set the SMTP port
        
        $mail->Username   = $mail_config['smtpUser']; // GMAIL username
        $mail->Password   = $mail_config['smtpPass']; // GMAIL password
        
        $mail->From       = $mail_config['mailFormEmail'];
        $mail->FromName   = $mail_config['mailFormName'];
        $mail->Subject    = $title;
        #$mail->AltBody    = "我也不知道"; //Text Body
        $mail->WordWrap   = 50; // set word wrap
        
        $mail->MsgHTML($body);
        # 抄送
        # $mail->AddReplyTo("282247364@qq.com","陈海均");
        # 附件
        # $mail->AddAttachment("/path/to/file.zip");             // attachment
        # 收件人
        foreach ($to as $k=>$v){
            $mail->AddAddress($k,$v);
        }
        $mail->IsHTML(true); // send as HTML
        
        if(!$mail->Send()) {
            return $mail->ErrorInfo;
        } else {
            return true;
        }
    }
    
    private static function msg($socket,$step) {
        $err = array('连接邮件服务器失败','身份标识错误','用户名或密码验证错误','目标邮件地址错误或不存在',
            '您的邮件内容格式有误','邮件未能发送');
        $str = fgets ( $socket );
        $status = substr($str,0,3);
        $statusCode = array('220','221','250','334','235','354');
        if(!in_array($status,$statusCode)){
            echo $status.'-----'.$err[$step];exit;
        }
        return $status;
    }
    
    static function mysendmail($to,$subject,$content){
        $socket = fsockopen("smtp.yeah.net",25,$e,$er,100);
        fwrite($socket,"HELO 163\r\n");
        self::msg($socket,1);
        fwrite($socket,"auth login\r\n");
        self::msg($socket,2);    
        fwrite($socket,"eGluZ21lbmc5wwuZXQ=\r\n");//用户名
        self::msg($socket,2);
        fwrite($socket,"Z2p5eGwwOBN==\r\n");//密码
        self::msg($socket,2);
        self::msg($socket,2);
        fwrite($socket,"MAIL FROM:<122@yeah.net>\r\n");
        self::msg($socket,3);
        fwrite($socket,"RCPT TO:<$to>\r\n");
        self::msg($socket,3);
        fwrite($socket,"DATA\r\n");
        self::msg($socket,3);
        fwrite($socket,"To:$to\r\n");
        fwrite($socket,"From:122@yeah.net\r\n");
        fwrite($socket,"SUBJECT: $subject\r\n");
        fwrite($socket,"Content-Type: text/html; charset=utf-8\r\n");
        fwrite($socket,"\r\n");
        fwrite($socket,"$content\r\n");
        fwrite($socket,".\r\n");
        self::msg($socket,5);
        fwrite($socket,"QUIT\r\n");
        if( self::msg($socket,5) == 221 ){
            return true;
        }
        return false;
    }
}


其中的邮件服务器那边的邮箱的用户名和密码都是经过base64_encode加密了的


阅读更多
个人分类: PHP
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭