①解压到项目中
②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 最佳答案
