利用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加密了的