PHP mailer邮件发送激活码


<?php
class EmailAction extends Action{
 
  //random()生成随机数,$numeric = 0 生成6位大小写字母与数字混合的字串。$numeric = 1生成6位数字的字符串
  public function random($length = 6 , $numeric = 0) {
  PHP_VERSION < '4.2.0' && mt_srand((double)microtime() * 1000000);
  if($numeric) {
    $hash = sprintf('%0'.$length.'d', mt_rand(0, pow(10, $length) - 1));
  } else {
    $hash = '';
    $chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghjkmnpqrstuvwxyz';
    $max = strlen($chars) - 1;
    for($i = 0; $i < $length; $i++) {
      $hash .= $chars[mt_rand(0, $max)];
    }
  }
  return $hash;
  }
  //发送邮件的方法
  public function index(){
    //生成6位激活码
    $random = $this->random(6,0);
    //获取本网站的域名,域名在config里面配置下.
    //例如'domain' => 'http://write.blog.csdn.net',
    $domain = C('domain');
    //生成激活码模块地址
    $url = $domain.U("Home/Email/activate")."/?yam=$random";
    //将邮件地址和随机数放入session
    session("goodlucktou@qq.com","$random");
    //发送邮件
    SendMail("goodlucktou@qq.com","这是邮件标题","将此网址复制到浏览框$url");
  }
}
如果使用thinkphp 则PHPMailer模块放在thinkphp Vendor目录下
function send_email($to,$subject='',$content=''){
Vendor('PHPMailer.PHPMailerAutoload');
$mail = new \PHPMailer();
$mail->IsSMTP(); // 启用SMTP
$mail->Host="smtp.qq.com"; //smtp服务器的名称(这里以QQ邮箱为例)
$mail->SMTPSecure = "ssl"; //目前规定必须使用ssl,非ssl的协议已经不支持了
$mail-> Port = 465; //端口号
//$mail->SMTPDebug = 2; //用于debug PHPMailer信息
$mail->SMTPAuth = true; //启用smtp认证
$mail->Username = "goodlucktou"; //你的邮箱名
$mail->Password = "XXXXXX" ; //邮箱授权码,授权码不是登录密码
$mail->From = "goodlucktou@qq.com"; //发件人地址(也就是你的邮箱地址)
$mail->FromName = "senderName"; //发件人姓名
$mail->AddAddress($to); //收件人地址
$mail->WordWrap = 50; //设置每行字符长度
$mail->IsHTML(true); // 是否HTML格式邮件
$mail->CharSet="utf-8"; //设置邮件编码
$mail->Subject =$subject; //邮件主题
$mail->Body = $content; //邮件内容
if($mail->Send()){
echo "success";
}else{
echo $mail->ErrorInfo;//打印错误信息
}
}
SMTP connect() failed解决方案
检查php是否安装openssl模块
echo !extension_loaded('openssl')?"Not Available":"Available";
SMTP connect() failed是因为之前邮件配置支持非ssl的协议,可以配置25端口,
现在大部分邮件配置仅支持ssl协议 端口号 465
官方提供 $mail->SMTPDebug = 2 调试参数 找问题所在
qq邮箱
配置邮件服务器和端口号的地址:
http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=369
Password参数之前是账号的登录密码,现在已经改成授权码了
获取方式
http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
愉快的发邮件
邮件服务器
腾讯QQ
接收服务器 pop.qq.com
发送服务器 smtp.qq.com

网易126
接收服务器 pop3.126.com
发送服务器 smtp.126.com

网易163免费邮
接收服务器 pop.163.com
发送服务器 smtp.163.com

网易163VIP
接收服务器 pop.vip.163.com
发送服务器 smtp.vip.163.com

网易188财富邮
接收服务器 pop.188.com
发送服务器 smtp.188.com

网易yeah.net
接收服务器 pop.yeah.net
发送服务器 smtp.yeah.net

网易netease.com
接收服务器 pop.netease.com
发送服务器 smtp.netease.com

新浪收费
接收服务器 pop3.vip.sina.com
发送服务器 smtp.vip.sina.com

新浪免费
接收服务器 pop3.sina.com.cn
发送服务器 smtp.sina.com.cn

搜狐
接收服务器 pop3.sohu.com
发送服务器 smtp.sohu.com

21cn快感邮
接收服务器 vip.21cn.com
发送服务器 vip.21cn.com

21cn经济邮
接收服务器 pop.163.com
发送服务器 smtp.163.com

tom
接收服务器 pop.tom.com
发送服务器 smtp.tom.com

263
接收服务器 263.net
发送服务器 smtp.263.net

网易163.com
接收服务器 rwypop.china.com
发送服务器 rwypop.china.com

雅虎
接收服务器 pop.mail.yahoo.com
发送服务器 smtp.mail.yahoo.com

Gmail
接收服务器 pop.gmail.com
发送服务器 smtp.gmail.com