thinkphp之swiftmailer邮件系统

浏览:5342 发布日期:2014/10/30 分类:技术分享 关键字: swiftmailer邮件系统
在开发过程中会用到,给用户发一封激活邮件功能,此时用到php邮件系统,常用的为swiftmailer,可以到官网下载库文件包( http://swiftmailer.org/)
①解压到项目中
②swiftmailer 类库扩展
Vendor('Swift.swift_required');

建立一个已有的邮件服务器的连接
$transport = Swift_SmtpTransport::newInstance('邮件服务器地址', 端口号)
->setUsername('用户名')
->setPassword('密码');
其中配置信息需要写到配置文件中
③创建邮件对象
$mailer =Swift_Mailer::newInstance($transport);

④邮件发送的各个设置

$message = Swift_Message::newInstance()
->setSubject('你的邮件主题') //创建邮件信息的主题,即发送标题 注意:Swift_Message::newInstance() 后面没有分号
->setFrom(array('907722303@qq.com' =>'小猴子')) //谁发送的 设置发送人及昵称 注意:本句话结束没有分号
->setTo(array('111@phptalker.com')) //发给谁 设置接收邮件人的列表 注意:本句话结束没有分号
->setBody('phptalker欢迎您'); //邮件发送的内容 注意:当一切都设置完毕了以后,最好加上分号结束


⑤调用发送动作,开始发送邮件
$mailer->send($message);

注意:上面函数可以有一个返回值,成功返回发送成功的邮件条数,失败,返回false




整个源码:<?php
Vendor('Swift.swift_required');
class MailAction extends Action{

public  function  send(  $to,  $subject,  $content  ){

                $transport =Swift_SmtpTransport::newInstance(C('EMAIL_HOST'), C('EMAIL_PORT'))
                ->setUsername(C('EMAIL_USER'))
                ->setPassword(C('EMAIL_PWD'));
                
                $mailer =Swift_Mailer::newInstance($transport);
                
                $message = Swift_Message::newInstance()
                ->setSubject($subject)
                ->setFrom(array(C('EMAIL_USER') =>C('EMAIL_NAME')))
                ->setTo($to)
                ->setContentType('text/html')
                ->setCharset('utf-8')        
                ->setBody($content);
                $mailer->send($message);

        }
        
        public function jihuo(){
                if (isset($_GET['id']) && isset($_GET['salt'])){
                        $id = intval($_GET['id']);
                        $model = new Model('User');
                        $userInfo = $model->find($id);
                        if ($userInfo){
                                
                                $salt = md5($id.md5(md5($userInfo['username']).md5($userInfo['email'])));
                                
                                if ($salt==$_GET['salt']){
                                        $model->where("id = $id ")->save(array('status'=>1));
                                        die('激活成功!');
                                        //执行激活
                                }else{
                                        die('url error!2');
                                }
                                
                        }else{
                                die('url error!1');
                        }
                        
                }else{
                        die('url error!0');
                }
        }
}
配置文件中变量:'EMAIL_HOST' => 'smtp.qq.com',     //邮件发送服务器
                'EMAIL_PORT' => '25',                     //邮件发送服务器端口
                'EMAIL_USER' => '907722303@qq.com',      //邮件发送服务器
                'EMAIL_PWD'  => 'xxxxxx',                          //邮件发送服务器密码
                'EMAIL_NAME' => 'phptalker技术部',           //邮件发送服务器
                
                //网站相关设置
                'TITLE'=>'php学习平台',
UserAction调用UserModel<?php
class UserAction extends  Action{
        public  function  index(){
                if (isset($_POST['submit'])){
                        
                        $UserModel = D('User');       //调用UserModel
                        $data = $UserModel->register();
                        
                        $this->ajaxReturn($data['data'],$data['info'],$data['status']);
                }else{
                        $this->display('User/index');
                }
                
        }
被调用的UserModel 中注册时调用邮件发送:function register(){
                $r = R('Web/Yzm/checkVerify');
                if ($r['status']==0){
                        return $r;
                }
                
                $allowType = array(0,1,2);
                if (!in_array(intval($_POST['type']), $allowType)){
                        $_POST['type'] = 0;
                }
                
                if (!$this->create()){
                    // 如果创建失败 表示验证没有通过 输出错误提示信息
                        
                        return array('info'=>$this->getError(),'status'=>0,'data'=>'');
                }else{
                        
                        
                  $r =  $this->add();// 验证通过 可以进行其他数据操作
                
                  
                  $url = 'http://'.$_SERVER['HTTP_HOST'].U('Mail/jihuo',array('id'=>$r,'salt'=>md5($r.md5(md5($_POST['username']).md5($_POST['email'])))));
                  
                  $content = "您注册的账号需要激活,<a href='{$url}'>请点击以下链接执行激活</a>,如果无法点击,请复制地址{$url}到地址栏,并访问";
                  

                  R('Mail/send',   array( array($_POST['email']),  '账户邮件激活',   $content)  );          
//此处调用发送邮件函数,R()函数包含的三部分分别对应send()函数中的三个参数    send(  $to,  $subject,  $content  )
                

                  return array('info'=>'注册成功','status'=>1,'data'=>'');
                }
                
        }
来自:http://www.phptalker.com/thread-85-1-1.html
最佳答案
评论( 相关
后面还有条评论,点击查看>>