🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 依赖类库 [PHPMailer](https://github.com/Synchro/PHPMailer) ## 效果 ![](https://box.kancloud.cn/2015-11-28_56597976ab54d.png) ![](https://box.kancloud.cn/2015-11-28_56597976c1361.png) ![](https://box.kancloud.cn/2015-11-28_56597976d5972.png) ## 实现 具体见 随书项目yang_book/examples/startup/EmailController.class.php ~~~ //发送邮件 public function send(){ if(IS_POST){ try { $to = I('to', '917647288@qq'); $title = I('title', '测试邮件'); $content = I('content', '<p>测试内容</p>'); //老杨写自己的,你们测换成自己的 别骚扰老样 $this->sendMail($to, $title, $content); //为了成功之后不会后退回这个页面导致重复发邮件 $this->success('发送测试邮件成功'); } catch (Exception $e) { $this->success($e->getMessage()); } }else{ $this->display(); } } /** * 邮件发送函数 */ public function sendMail($to, $title, $content) { Vendor('PHPMailer.PHPMailerAutoload'); $mail = new \PHPMailer(); //实例化 $mail->IsSMTP(); // 启用SMTP $mail->Host = C('MAIL_HOST'); //smtp服务器的名称(这里以QQ邮箱为例) $mail->SMTPAuth = C('MAIL_SMTPAUTH'); //启用smtp认证 $mail->Username = C('MAIL_USERNAME'); //你的邮箱名 $mail->Password = C('MAIL_PASSWORD') ; //邮箱密码 $mail->From = C('MAIL_FROM'); //发件人地址(也就是你的邮箱地址) $mail->FromName = C('MAIL_FROMNAME'); //发件人姓名 $mail->AddAddress($to, "尊敬的客户"); $mail->WordWrap = 50; //设置每行字符长度 $mail->IsHTML(C('MAIL_ISHTML')); // 是否HTML格式邮件 $mail->CharSet = C('MAIL_CHARSET'); //设置邮件编码 $mail->Subject = $title; //邮件主题 $mail->Body = $content; //邮件内容 $mail->AltBody = "这是一个纯文本的身体在非营利的HTML电子邮件客户端"; //邮件正文不支持HTML的备用显示 return $mail->Send(); } ~~~ 主要是send 时要配置对: 我这里的配置: ~~~ 'MAIL_HOST' =>'smtp.126.com',//smtp服务器的名称 'MAIL_SMTPAUTH' =>TRUE, //启用smtp认证 'MAIL_USERNAME' =>'geekcompany@126.com',//你的邮箱名 'MAIL_FROM' =>'geekcompany@126.com',//发件人地址 'MAIL_FROMNAME'=>'老杨带你学ThinkPHP',//发件人姓名 'MAIL_PASSWORD' =>'justjobdeer',//邮箱密码 'MAIL_CHARSET' =>'utf-8',//设置邮件编码 'MAIL_ISHTML' =>TRUE, // 是否HTML格式邮件 ~~~ 上面的大家换成自己的 大家可以使用qq或者126 126的稳定一些。 ## 注意 phpmail的报错是抛异常,所以老杨用try catch去处理发的那一步。 我们用第三方类库时要弄清第三方php库出错的情况 是返回错误状态和信息还是抛异常。写好对应代码别让第三方出错页面信息显示给用户看。