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

PHPMailer的介绍:
  1. 可运行在任何平台之上
  2. 支持SMTP验证
  3. 发送邮时指定多个收件人,抄送地址,暗送地址和回复地址;注:添加抄送、暗送仅win平台下smtp方式支持
  4. 支持多种邮件编码包括:8bit,base64,binary和quoted-printable
  5. 支持冗余SMTP服务器,即可以指定主smtp服务器地址也只可以指定备份smtp服务器
  6. 支持带附件的邮件,可以为邮件添加任意格式的附件—当然得你的服务器有足够大的带宽支撑
  7. 自定义邮件头信息,这跟php中通过header函数发送头信息类似 
    支持将邮件正文制作成HTMl内容,那么就可以在邮件正文中插入图 
  8. 灵活的debug支持
  9. 经测试兼容的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 ='[email protected]';

    //smtp登录的密码 使用生成的授权码(就刚才叫你保存的最新的授权码)
    $mail->Password = 'sqyofzbqlfkntbncl';

    //设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”
    $mail->From = '[email protected]';

    //邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false
    $mail->isHTML(true); 

    //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 这里第二个参数的意义不大
    $mail->addAddress($to,'lsgo在线通知');

    //添加多个收件人 则多次调用方法即可
    // $mail->addAddress('[email protected]','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('[email protected]','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'];//"[email protected]";//$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'];//"[email protected]";
		$mail->addAddress($email);     // Add a recipient
		// $mail->addAddress('[email protected]');               // Name is optional
		// $mail->addReplyTo('[email protected]', 'Information');
		// $mail->addCC('[email protected]');
		// $mail->addBCC('[email protected]');

		// $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;
	}









猜你喜欢

转载自blog.csdn.net/u014724048/article/details/78165843