php发送邮件验证码,PHP(ThinkPHP5.0) + PHPMailer 进行邮箱发送验证码

GitHub下载最新版第三方类库PHPMailer;

第一步:

打开网址https://github.com/PHPMailer/PHPMailer/ 下载PHPMailer,PHPMailer 需要 PHP 的 sockets 扩展支持,而登录 QQ 邮箱 SMTP 服务器则必须通过 SSL 加密的, PHP 还得包含 openssl 的支持。

fcb728489e8468229fd661789f580d36.png

第二步:使用 phpinfo() 函数查看 socket 和 openssl 扩展信息(wamp server 默认启用了该扩展)。

openssl 如果没有开启请打开php.ini文件进行开启

首先检查php.ini中;extension=php_openssl.dll是否存在, 如果存在的话去掉前面的注释符‘;’, 如果不存在这行,那么添加extension=php_openssl.dll。

93f93bdacac7d3dfd50d0c2971aa7d73.png

PHPMailer 核心文件

4effbe9855170f14772fb6d5a33b562c.png

第三步:QQ 邮箱设置

所有的主流邮箱都支持 SMTP 协议,但并非所有邮箱都默认开启,您可以在邮箱的设置里面手动开启。

第三方服务在提供了账号和密码之后就可以登录 SMTP 服务器,通过它来控制邮件的中转方式。

第四步:开启 SMTP 服务

10ffb11209293d6b124b75ef000d533d.png

选择 IMAP/SMTP 服务,点击开启服务

第五步:验证密保

475feeb6962244fe1271d797e41872d5.png

发送短信“配置邮件客户端”至1069-0700-69

第六步:获取授权码

3c0c123ec152545f26511e4444388135.png

SMTP 服务器认证密码,需要妥善保管(PS:密码直接没有空格)

第七步:PHP发送邮件

基本代码

下面的代码演示了 PHPMailer 的使用方法,注意 PHPMailer 实例的配置过程。

// 引入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服务器的远程服务器端口号

$mail->Port = 465;

// 设置发送的邮件的编码

$mail->CharSet = 'UTF-8';

// 设置发件人昵称 显示在收件人邮件的发件人邮箱地址前的发件人姓名

$mail->FromName = '发件人昵称';

// smtp登录的账号 QQ邮箱即可

$mail->Username = '12345678@qq.com';

// smtp登录的密码 使用生成的授权码

$mail->Password = '**********';

// 设置发件人邮箱地址 同登录账号

$mail->From = '12345678@qq.com';

// 邮件正文是否为html编码 注意此处是一个方法

$mail->isHTML(true);

// 设置收件人邮箱地址

$mail->addAddress('87654321@qq.com');

// 添加多个收件人 则多次调用方法即可

$mail->addAddress('87654321@163.com');

// 添加该邮件的主题

$mail->Subject = '邮件主题';

// 添加邮件正文

$mail->Body = '

Hello World

';

// 为该邮件添加附件

$mail->addAttachment('./example.pdf');

// 发送邮件 返回状态

$status = $mail->send();

我在thinkphp5.0中使用代码

/**

* 邮件发送

* @param $to 接收人

* @param string $subject 邮件标题

* @param string $content 邮件内容(html模板渲染后的内容)

* @throws Exception

* @throws phpmailerException

*/

function send_email($to,$subject='',$content=''){

vendor('phpmailer.PHPMailerAutoload');

//require_once 'vendor/phpmailer/PHPMailerAutoload.php';

$mail = new PHPMailer;

$arr = db('config')->where('inc_type','smtp')->select();

$config = convert_arr_kv($arr,'name','value');

$mail->CharSet = 'UTF-8'; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码

$mail->isSMTP();

//Enable SMTP debugging

// 0 = off (for production use)

// 1 = client messages

// 2 = client and server messages

$mail->SMTPDebug = 0;

//调试输出格式

//$mail->Debugoutput = 'html';

//smtp服务器

$mail->Host = $config['smtp_server'];

//端口 - likely to be 25, 465 or 587

$mail->Port = $config['smtp_port'];

if($mail->Port === 465) $mail->SMTPSecure = 'ssl';// 使用安全协议

//Whether to use SMTP authentication

$mail->SMTPAuth = true;

//发送邮箱

$mail->Username = $config['smtp_user'];

//密码

$mail->Password = $config['smtp_pwd'];

//Set who the message is to be sent from

$mail->setFrom($config['smtp_user'],$config['email_id']);

//回复地址

//$mail->addReplyTo('replyto@example.com', 'First Last');

//接收邮件方

if(is_array($to)){

foreach ($to as $v){

$mail->addAddress($v);

}

}else{

$mail->addAddress($to);

}

$mail->isHTML(true);// send as HTML

//标题

$mail->Subject = $subject;

//HTML内容转换

$mail->msgHTML($content);

//Replace the plain text body with one created manually

//$mail->AltBody = 'This is a plain-text message body';

//添加附件

//$mail->addAttachment('images/phpmailer_mini.png');

//send the message, check for errors

return $mail->send();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值