admin 管理员组

文章数量: 887007

邮箱接口的使用

 

1.原理:

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

php中实现邮件发送:

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

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

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

下载phpmailer

封装发送邮件的方法:

/*** * @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'; // 自己注册的邮箱服务器地址$mail->SMTPAuth = true; // 启用SMTP验证功能$mail->Username = 'liuchenworking@163'; // 163用户名(请填写完整的email地址)$mail->Password = 'nishizhuma1'; // 发件人邮箱密码$mail->From = 'liuchenworking@163'; //邮件发送者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>

效果图如下:

控制器方法代码如下:

/*** 添加管理员表数据内容*/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 = '.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');}}

效果图:

转载于:

本文标签: 邮箱接口的使用