## 依赖类库
[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库出错的情况 是返回错误状态和信息还是抛异常。写好对应代码别让第三方出错页面信息显示给用户看。
- 序
- 前言
- 内容简介
- 目录
- 基础知识
- 起步
- 控制器
- 模型
- 模板
- 命名空间
- 进阶知识
- 路由
- 配置
- 缓存
- 权限
- 扩展
- 国际化
- 安全
- 单元测试
- 拿来主义
- 调试方法
- 调试的步骤
- 调试工具
- 显示trace信息
- 开启调试和关闭调试的区别
- netbeans+xdebug
- Socketlog
- PHP常见错误
- 小黄鸭调试法,每个程序员都要知道的
- 应用场景
- 第三方登录
- 图片处理
- 博客
- SAE
- REST实践
- Cli
- ajax分页
- barcode条形码
- excel
- 发邮件
- 汉字转全拼和首字母,支持带声调
- 中文分词
- 浏览器useragent解析
- freelog项目实战
- 需求分析
- 数据库设计
- 编码实践
- 前端实现
- rest接口
- 文章发布
- 文件上传
- 视频播放
- 音乐播放
- 图片幻灯片展示
- 注册和登录
- 个人资料更新
- 第三方登录的使用
- 后台
- 微信的开发
- 首页及个人主页
- 列表
- 归档
- 搜索
- 分页
- 总结经验
- 自我提升
- 进行小项目的锻炼
- 对现有轮子的重构和移植
- 写技术博客
- 制作视频教程
- 学习PHP的知识和新特性
- 和同行直接沟通、交流
- 学好英语,走向国际
- 如何参与
- 浏览官网和极思维还有看云
- 回答ThinkPHP新手的问题
- 尝试发现ThinkPHP的bug,告诉官方人员或者push request
- 开发能提高效率的ThinkPHP工具
- 尝试翻译官方文档
- 帮新手入门
- 创造基于ThinkPHP的产品,进行连带推广
- 展望未来
- OneThink
- ThinkPHP4
- 附录