PHP如何发邮件?

知识点:邮件相关的协议:

smtp:发邮件,端口:25

pop3:收邮件,端口:110

 

1、要有邮件服务器

自己搭建一个邮箱服务器

使用现有的:126163等等。

163发邮件的接口:smtp.163.com    ssl://smtp.qq.com

2、在163注册一个邮箱账号

php中发送邮件使用一个 phpmailer的类。

phpmailer发送邮件示例

注意事项: 

启用fsockopen函数

首先,在php.ini中去掉下面的两个分号

复制代码 代码示例:

extension=php_sockets.dll

extension=php_openssl.dll

 

代码案例:

<?php

 require 'PHPMailer/class.phpmailer.php';

 $mail             = new PHPMailer();

/*服务器相关信息*/

$mail->IsSMTP();                        //设置使用SMTP服务器发送

$mail->SMTPAuth   = true;               //开启SMTP认证

$mail->Host       = 'smtp.163.com';        //设置 SMTP 服务器,自己注册邮箱服务器地址

$mail->Username   = 'lau0400810121';   //发信人的邮箱名称

$mail->Password   = 'lau13142yun';          //发信人的邮箱密码

/*内容信息*/

$mail->IsHTML(true);          //指定邮件格式为:html

$mail->CharSet    ="UTF-8";      //编码

$mail->From       = 'lau0400810121@163.com';    //发件人完整的邮箱名称

$mail->FromName   = '地球球长委员会';  //发信人署名

$mail->Subject    = "地球的球长选举";    //信的标题

$mail->MsgHTML("尊敬的用户:明天开会,会后,我请客");    //发信主体内容

        /*发送邮件*/

$mail->AddAddress(18665455185@163.com");    //收件人地址

        //使用send函数进行发送

if($mail->Send()) {

   echo 'ok ok';

} else {

            echo $mail->ErrorInfo;//如果发送失败,则返回错误提示

}

 

作业案例

完成用户注册完成后,要通过邮箱验证。如果用户密码忘了,可以通过邮箱找回密码

create table ci_user1(

            id int primary key auto_increment,

            username   varchar(32) not null comment '用户的名称',

            password   char(32) not null comment '用户的密码',

            active  tinyint  not null default 0  comment '激活的标志,0表示没有激活,1表示已经激活',

            validate varchar(32) not null comment '激活的用户的校验码',

            question varchar(32) not null comment '问题的名称',

            answer varchar(32) not null comment '问题的答案'

)

完成用户注册,找回密码案例