邮箱接口的使用

 

1.原理:

211655_9XF0_3175093.png

2 .SMTP(Simple Mail Transfer Protocol) 
SMTP(Simple Mail Transfer Protocol): 
即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 
SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。 
通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。 
首先需要有163邮箱,因为我们需要使用163邮箱服务器

php中实现邮件发送:

中大公司自己搭建自己的邮件服务器,也可以使用免费的邮件服务器(smtp.163.com), 小公司在使用. 
163 邮箱

211726_A22a_3175093.png

如何使用: 
1.打开smtp服务,并设置授权密码

211727_LLg7_3175093.png

211713_ISDP_3175093.png

设置授权密码(这个授权码实在php发送邮件的时候使用的与登录密码不能一致)

211719_Hl9F_3175093.png

211700_4BPI_3175093.png

211700_pZ1I_3175093.png

下载phpmailer

211724_DqZQ_3175093.png

211706_YfcT_3175093.png

封装发送邮件的方法:

/**
     * 
     * @param type $toEmail     接收人邮箱的地址
     * @param type $subject     邮箱标题  
     * @param type $content     邮箱内容
     */
    function sendEmail( $toEmail , $subject ,$content ) {
        require("./PHPMailer/class.phpmailer.php"); //下载的文件必须放在该文件所在目录
        $mail = new PHPMailer(); //建立邮件发送类
        $mail->IsSMTP(); // 使用SMTP方式发送
        $mail->CharSet = 'UTF-8'; // 设置邮件的字符编码
        $mail->Host = 'smtp.163.com'; // 自己注册的邮箱服务器地址
        $mail->SMTPAuth = true; // 启用SMTP验证功能
        $mail->Username = 'liuchenworking@163.com'; // 163用户名(请填写完整的email地址)
        $mail->Password = 'nishizhuma1'; // 发件人邮箱密码

        $mail->From = 'liuchenworking@163.com'; //邮件发送者email地址
        $mail->FromName = '京西商城';
        $mail->AddAddress( $toEmail ); //收件人地址,可以替换成任何想要接收邮件的email信箱,格式是AddAddress("收件人email","收件人姓名")
        //$mail->AddReplyTo("", "");
        //$mail->AddAttachment("index.php"); // 添加附件
        $mail->IsHTML(true); // set email format to HTML //是否使用HTML格式
        $mail->Subject = $subject; //邮件标题
        $mail->Body = $content; //邮件内容
        //$mail->AltBody = "This is the body in plain text for non-HTML mail clients"; //附加信息,可以省略
        if (!$mail->Send()) {
            return false;
        }
        return true;
    }

视图代码如下:

<layout name="Index/header_footer" />
<div class="main-div">
    <form name="main_form" method="POST" action="__SELF__" enctype="multipart/form-data" onSubmit="return Validator.Validate(this,3)" >
        <table cellspacing="1" cellpadding="3" width="100%">
            <tr>
                <td class="label">所在角色:</td>
                <td>                     
                    <select name="role_id" style="width:261px;">                
                        <foreach name='role' item = 'vo'>
                            <option value="{$vo.id}" >
                                {$vo.name}
                            </option>
                        </foreach>
                    </select>
                </td>
            </tr>
            <tr>
                <td class="label">账号:</td>
                <td>
                    <input type="text" name="username" dataType='Require' value="{$my['username']}"  <if condition=" $my ">   disabled="disabled" </if> />
                </td>
            </tr>
            <tr>
                <td class="label">密码:</td>
                <td>
                    <input name="password" <if condition=" !$my "> dataType="SafeString" </if>   msg="密码不符合安全规则" type="password"><if condition=" $my "> 留空代表不修改密码 </if>
                </td>
            </tr>
            <tr>
                <td class="label">确认密码:</td>
                <td>
                    <input name="repeat" dataType="Repeat" to="password" msg="两次输入的密码不一致" type="password">
                </td>
            </tr>
            <tr>
                <td class="label">真实姓名:</td>
                <td>
                    <input type="text" name="truename" dataType='Chinese' msg="真实姓名只允许中文" value="{$my['truename']}"/>
                </td>
            </tr>
             <tr>
                <td class="label">电话号码:</td>
                <td>
                  <input type="text" value="{$my['mobile']}" name="mobile" dataType='Mobile' />
                </td>
            </tr>
             <tr>
                <td class="label">邮 箱:</td>
                <td>
                   <input type="text" value="{$my['email']}" name="email" dataType='Email' />
                </td>
            </tr>
            <tr>
                <td class="label">是否启用</td>
                <td>
                    <input type="radio" name="is_use" value="1" checked="checked" />启用 
                    <input type="radio" name="is_use" value="0"  />禁用 
                </td>
            </tr>
            <input type="hidden" name="id" value="{$Think.get.id}" />
            <tr>
                <td colspan="99" align="center">
                    <input type="submit" class="button" value=" 确定 " />
                    <input type="reset" class="button" value=" 重置 " />
                </td>
            </tr>
        </table>        
    </form>
</div>
<js href="__VENDOR__/validator.js" />
<script>
</script>

效果图如下:

211708_1JzY_3175093.png

控制器方法代码如下:

/**
     * 添加管理员表数据内容
     */
    public function add(){

        if(IS_POST){

            $this->_add();
        }
        //获取所有的角色信息
        $result = D('Role')->select();
        $this->assign('role' , $result);
          //头部信息
        $this->setPageBtn('添加管理员' , '管理员列表'  , U('index') );

        $this->display('info');

    }

    /**
     * 添加管理员执行操作
     */
    protected function _add(){ 

        $obj = D('Admin'); 

        if(!$obj->create())
            $this->error('创建数据失败!'.$obj->getError()); 

       $insert_id = $obj->add();

        if( $insert_id ===false ){
            $this->error('插入数据失败'.$obj->getDbError ());          
        }else{
            $this->success('插入数据成功');
            //发送邮箱验证邮件
            $email = I('post.email');

            //给邮箱加密,发送到memcache中
            $sig = md5($email);

            $link = 'http://www.myjd.com/index.php/api/index/Vemail/sig/'.$sig.'/insert_id/'.$insert_id;

            $content = '点击如下连接激活你的邮箱:'.$link;

            sendEmail($email , '请激活你的邮箱' , $content);

            //给memcache中添加此邮箱的的数据,60秒消除
            $mem = new \Memcache();

            $mem->connect('127.0.0.1',11211);

            $mem->set($sig,1,0,60);
        }
        exit;
    }

获取激活邮件后,点击激活的方法代码:

/**
     * 
     * @param type $sig memcache key值
     * @return boolean 
     */
    public function Vemail($sig , $insert_id){
        //获取数据,先查看数据库中是否已经验证
        $obj = D('Admin');
        $result = $obj->field('is_use')->find( (int) $insert_id );
        if($result['is_use']==1){                                
            $this->success('你的验证已通过!谢谢!', '/Admin/User/index');
            die;
        }

        $mem = new \Memcache();
        $mem->connect('127.0.0.1',11211);
        $times = (int)$mem->get($sig);

        if($times){
                //存在值的话,说明邮箱已没过期可以验证 
                //修改数据
                $data['id'] = (int) $insert_id ; 
                $data['is_use'] = 1;

                if($obj->data($data)->save())
                    $this->success('你的验证已通过!谢谢!', '/Admin/User/index');
        }else{                

                $this->success('你的验证邮箱已过期!', '/Admin/User/index');
        }
    }

效果图:

211708_QlP7_3175093.png

211711_Rc4U_3175093.png

转载于:https://my.oschina.net/u/3175093/blog/833611

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值