thinkcmf 邮箱获取发送的邮件(验证码)

  • 来源:新网
  • 更新日期:2018-03-14

摘要:PHPMailer的介绍: 可运行在任何平台之上支持SMTP验证发送邮时指定多个收件人,抄送地址,暗送地址和回复地址;注:添加抄送、暗送仅win平台下smtp方式支持支持多种邮件编码包括:8bit,base64,binary和quoted-printable支持冗余SMTP服务器,即可以指定主smtp服务器地址也只可以指定备份smtp服务器支持带附件的邮件,可以为邮件添加任意格式的附件—当然

PHPMailer的介绍: 可运行在任何平台之上支持SMTP验证发送邮时指定多个收件人,抄送地址,暗送地址和回复地址;注:添加抄送、暗送仅win平台下smtp方式支持支持多种邮件编码包括:8bit,base64,binary和quoted-printable支持冗余SMTP服务器,即可以指定主smtp服务器地址也只可以指定备份smtp服务器支持带附件的邮件,可以为邮件添加任意格式的附件—当然得你的服务器有足够大的带宽支撑自定义邮件头信息,这跟php中通过header函数发送头信息类似支持将邮件正文制作成HTMl内容,那么就可以在邮件正文中插入图片灵活的debug支持经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等
邮箱配置
1。打开QQ邮箱,点击设置进入,选择“账户
 
3、务必开启前两项服务:每个邮箱都是可以发邮件的,因为此时我们的网站现在是作为一个第三方客户端存在的
点击开启时,会提示以下内容,

当你完成以上步骤之后,就会得到一个授权码,你可以先复制出来,待会我们会用到(开启两项的话会得到两个授权码,用最后的那个授权码!或者点击下面的生成授权码来获取一个新的授权码,一定要最新的!)。
 
4.其他文章借鉴,暂时未遇到
代码编写:
5.发送邮件代码:文件名为functions.php
 

/*发送邮件方法 *@param $to:接收者 $title:标题 $content:邮件内容 *@return bool true:发送成功 false:发送失败 */ function sendMail($to,$title,$content){ //引入PHPMailer的核心文件 使用require_once包含避免出现PHPMailer类重复定义的警告 require_once("phpmailer/class.phpmailer.php"); require_once("phpmailer/class.smtp.php"); //实例化PHPMailer核心类 $mail = new PHPMailer(); //是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式 $mail->SMTPDebug = 1; //使用smtp鉴权方式发送邮件 $mail->isSMTP(); //smtp需要鉴权 这个必须是true $mail->SMTPAuth=true; //链接qq域名邮箱的服务器地址 $mail->Host = \'smtp.qq.com\'; //设置使用ssl加密方式登录鉴权 $mail->SMTPSecure = \'ssl\'; //设置ssl连接smtp服务器的远程服务器端口号,以前的默认是25,但是现在新的好像已经不可用了 可选465或587 $mail->Port = 465; //设置smtp的helo消息头 这个可有可无 内容任意 // $mail->Helo = \'Hello smtp.qq.com Server\'; //设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名 $mail->Hostname = \'http://www.lsgogroup.com\'; //设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码 $mail->CharSet = \'UTF-8\'; //设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名 $mail->FromName = \'LSGO实验室\'; //smtp登录的账号 这里填入字符串格式的qq号即可 $mail->Username =\'12345678@qq.com\'; //smtp登录的密码 使用生成的授权码(就刚才叫你保存的最新的授权码) $mail->Password = \'sqyofzbqlfkntbncl\'; //设置发件人邮箱地址 这里填入上述提到的“发件人邮箱” $mail->From = \'12345678@qq.com\'; //邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false $mail->isHTML(true); //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 这里第二个参数的意义不大 $mail->addAddress($to,\'lsgo在线通知\'); //添加多个收件人 则多次调用方法即可 // $mail->addAddress(\'xxx@163.com\',\'lsgo在线通知\'); //添加该邮件的主题 $mail->Subject = $title; //添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 如:使用file_get_contents函数读取本地的html文件 $mail->Body = $content; //为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称 // $mail->addAttachment(\'./d.jpg\',\'mm.jpg\'); //同样该方法可以多次调用 上传多个附件 // $mail->addAttachment(\'./Jlib-1.1.0.js\',\'Jlib.js\'); $status = $mail->send(); //简单的判断与提示信息 if($status) { return true; }else{ return false; } } 6.php测试代码

<?php require_once("./functions.php"); $flag = sendMail(\'123456@qq.com\',\'lsgo在线通知\',\'您的验证码是123456,请不要泄露给其他人\'); if($flag){ echo "发送邮件成功!"; }else{ echo "发送邮件失败!"; } ?>


a.以下测试代码为本人所写:请严格按照代码格式编写;此代码编写使用thinkcmf框架

public function sendEmail($email) { $rs = array(\'code\' => 0, \'msg\' => \'\', \'info\' => array()); require_once("./PHPMailer/PHPMailerAutoload.php"); $config = $this->getConfigPri(); $configpub = $this->getConfigPub(); $mail=new PHPMailer(); $mail->SMTPDebug = 0; // Enable verbose debug output $mail->CharSet = "UTF-8"; $mail->isSMTP(); // Set mailer to use SMTP $mail->Host =$config[\'email_smtp\'];// "smtp.qq.com";//$config[\'email_smtp\']; // Specify main and backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = $config[\'email_loginname\'];//"598439366@qq.com";//$config[\'email_loginname\']; // SMTP username $mail->Password =$config[\'email_pwd\'];// "ezynvlpyqplmbfag";//$config[\'email_password\']; // SMTP password $mail->SMTPSecure =$config[\'email_smtp_secure\'];// "ssl";//$config[\'email_smtp_secure\']; // Enable TLS encryption, `ssl` also accepted $mail->Port =$config[\'email_smtp_port\'];// 465;//$config[\'email_smtp_port\']; // TCP port to connect to /* $mail->setFrom($config[\'email_loginname\'], $config[\'email_sender\']); */ $mail->FromName =$configpub[\'site\']; $mail->From=$config[\'email_loginname\'];//"598439366@qq.com"; $mail->addAddress($email); // Add a recipient // $mail->addAddress(\'ellen@example.com\'); // Name is optional // $mail->addReplyTo(\'info@example.com\', \'Information\'); // $mail->addCC(\'cc@example.com\'); // $mail->addBCC(\'bcc@example.com\'); // $mail->addAttachment(\'/var/tmp/file.tar.gz\'); // Add attachments // $mail->addAttachment(\'/tmp/image.jpg\', \'new.jpg\'); // Optional name $mail->isHTML(true); // Set email format to HTML $email_code = $this->random(6,1); $mail->Subject = \'郵箱验证码\'; $mail->Body = "您的验证码是:".$email_code."。请不要把验证码泄露给其他人。"; //$mail->AltBody = \'This is the body in plain text for non-HTML mail clients\'; // 发送邮件。 /* $rs=array(); */ /* return $mail; */ $rs=$mail->Send(); if(!$rs){ /* $mailerror=$mail->ErrorInfo;$rs[\'msg\']=$mailerror; */ return 1001; } $_SESSION[\'update_email_code\'] = $email_code; return 0; }

b.编写测试代码:其中php文件代码存放位置:/data/wwwroot/twjs.yunbaozhibo.com/api/public/PHPMailer
 
 

/** * 發送郵箱,獲取驗證碼 * @desc 用于編輯用戶資料中:編輯用戶手機號 * @return int code 操作碼,0表示成功, 1表示用戶不存在 * @return array info * @return string msg 提示信息 */ public function getEmail() { $rs = array(\'code\' => 0, \'msg\' => \'\', \'info\' => array()); require_once("./PHPMailer/PHPMailerAutoload.php"); $email=$this->email; $info=$this->sendEmail($email); if($info==1001){ $rs[\'code\']=1001; $rs[\'msg\']="發送失敗"; } $rs[\'info\']= $info; $rs[\'msg\'] = \'驗證碼已發送,請前往郵箱查看\'; return $rs; }