澳门新葡萄京官网首页php使用phpmailer发送邮件

这段时间修改了一下我们系统的登陆功能,为了更加安全,增加了发送邮件验证功能。当用户登陆的时候判断登陆ip是否是之前登陆过的,如果不是的话,需要向邮箱里发送验证码,然后把收到的验证码输入再登陆,如果验证码正确并且时间没有超过规定时间,可以登陆,并且记下此次登陆的ip和时间,以后再以此ip登的话,就不用验证了。如果时间超过了,验证码失效,需重新发送。验证错误不能登陆,需重新输验证码,或在发送新的验证码到邮箱。为了实现此功能,我用到了如何向邮箱发送邮件,以及获取登陆ip的知识。下面整理一下,以便以后自己查看。

澳门新葡萄京官网首页 ,本人新手,由于要做邮件发送验证码,所以找到和搜集到这些,本人亲测完全可以用

发送邮件:

这是163邮箱的 因为不是企业邮箱填写的账号是163的账号,但是密码是授权码

首先需要下载phpmail的压缩包,然后解压,把解压后的文件复制到项目中。在项目中引入文件。 

授权码的获取方式为:

require(“phpmailer/class.phpmailer.php”);
//文件的路径具体看自己的项目中的路径是怎么样的

澳门新葡萄京官网首页 1

然后

澳门新葡萄京官网首页 2

澳门新葡萄京官网首页 3

然后在这个页面向下看可以看到

澳门新葡萄京官网首页 4

接下来就是执行代码了

    //引入PHPMailer的核心文件 使用require_once包含避免出现PHPMailer类重复定义的警告    include("PHP/class.smtp.php");    include("PHP/class.phpmailer.php");//示例化PHPMailer核心类    $mail = new PHPMailer();//是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式    $mail->SMTPDebug = 1;//使用smtp鉴权方式发送邮件,当然你可以选择pop方式 sendmail方式等 本文不做详解//可以参考http://phpmailer.github.io/PHPMailer/当中的详细介绍    $mail->isSMTP();//smtp需要鉴权 这个必须是true    $mail->SMTPAuth=true;//链接qq域名邮箱的服务器地址    $mail->Host = 'smtp.163.com';//设置使用ssl加密方式登录鉴权  因为163默认开启所以不要但是qq要这句    //$mail->SMTPSecure = 'ssl';//设置ssl连接smtp服务器的远程服务器端口号 可选465或587    $mail->Port = 25;//设置smtp的helo消息头 这个可有可无 内容任意    //$mail->Helo = 'Hello smtp.163.com Server';//设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名    //$mail->Hostname = 'jjonline.cn';//设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码    $mail->CharSet = 'UTF-8';//设置发件人姓名 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名    $mail->FromName = '发件人姓名';//smtp登录的账号 这里填入163邮箱账号即可    $mail->Username ='163邮箱账号';//smtp登录的密码     $mail->Password = '授权码';//设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”    $mail->From = '上述提到的"发件人邮箱和上面的163邮箱相同"';//邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false    $mail->isHTML(true);//设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 这里第二个参数的意义不大    $mail->addAddress('邮箱地址');//添加多个收件人 则多次调用方法即可    //$mail->addAddress('xxx@163.com','测试');//添加该邮件的主题    $mail->Subject = '测试';//添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 如:使用file_get_contents函数读取本地的html文件    $mail->Body = "测试的验证码".$token;//为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称    //$mail->addAttachment('./d.jpg','mm.jpg');//同样该方法可以多次调用 上传多个附件    //$mail->addAttachment('./Jlib-1.1.0.js','Jlib.js');//发送命令 返回布尔值//PS:经过测试,要是收件人不存在,若不出现错误依然返回true 也就是说在发送之前 自己需要些方法实现检测该邮箱是否真实有效    $status = $mail->send();//简单的判断与提示信息    if($status) {        echo '发送邮件成功';    }else{        echo '发送邮件失败,错误信息:'.$mail->ErrorInfo;    }

qq现在也要获取授权码登陆 获取方式设置-》账户

    //引入PHPMailer的核心文件 使用require_once包含避免出现PHPMailer类重复定义的警告    include("PHP/class.smtp.php");    include("PHP/class.phpmailer.php");//示例化PHPMailer核心类    $mail = new PHPMailer();//是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式    $mail->SMTPDebug = 1;//使用smtp鉴权方式发送邮件,当然你可以选择pop方式 sendmail方式等 本文不做详解//可以参考http://phpmailer.github.io/PHPMailer/当中的详细介绍    $mail->isSMTP();//smtp需要鉴权 这个必须是true    $mail->SMTPAuth=true;//链接qq域名邮箱的服务器地址    $mail->Host = 'smtp.qq.com';//设置使用ssl加密方式登录鉴权  qq需要ssl登陆鉴权    $mail->SMTPSecure = 'ssl';//设置ssl连接smtp服务器的远程服务器端口号 可选465或587    $mail->Port = 465;//设置smtp的helo消息头 这个可有可无 内容任意    //$mail->Helo = 'Hello smtp.163.com Server';//设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名    //$mail->Hostname = 'jjonline.cn';//设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码    $mail->CharSet = 'UTF-8';//设置发件人姓名 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名    $mail->FromName = 'wangkun';//smtp登录的账号 这里填入字符串格式的qq号即可    $mail->Username ='只要qq号码就好';//smtp登录的密码 这里填入“独立密码” 若为设置“独立密码”则填入登录qq的密码 建议设置“独立密码”ssawncngrsjbbbdc    $mail->Password = 'qq获取的授权码';//设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”    $mail->From = '输入完整的邮箱账号';//邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false    $mail->isHTML(true);//设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 这里第二个参数的意义不大    $mail->addAddress('收件人邮箱');//添加多个收件人 则多次调用方法即可    //$mail->addAddress('xxx@163.com','晶晶在线用户');//添加该邮件的主题    $mail->Subject = '标题';//添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 如:使用file_get_contents函数读取本地的html文件    $mail->Body = "你的内容".$token;//为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称    //$mail->addAttachment('./d.jpg','mm.jpg');//同样该方法可以多次调用 上传多个附件    //$mail->addAttachment('./Jlib-1.1.0.js','Jlib.js');//发送命令 返回布尔值//PS:经过测试,要是收件人不存在,若不出现错误依然返回true 也就是说在发送之前 自己需要些方法实现检测该邮箱是否真实有效    $status = $mail->send();//简单的判断与提示信息    if($status) {        echo '发送邮件成功';    }else{        echo '发送邮件失败,错误信息:'.$mail->ErrorInfo;    }

这样就可以了

如何下载PHPMailer代码包?

PHPMailer项目地址:

下载下来的PHPMailer解压后进行瘦身,仅需要class.phpmailer.php、class.pop3.php、
class.smtp.php以及PHPMailerAutoload.php四个文件,language文件夹可要可不要,那个主要用于debug调试
时的显示信息。

发表评论

电子邮件地址不会被公开。 必填项已用*标注