ci 框架发送邮箱
定义数据
$config = array(
'protocol' =>'smtp',
'smtp_host'=>'ssl://smtp.163.com',
'smtp_user'=>'zhouddxg@163.com',
'smtp_pass'=>'***********',
'smtp_port'=>465,
'smtp_timeout'=>30,
'mailtype'=>'html',
'charset'=>'utf-8',
'wordwrap'=>TRUE,
'newline'=>PHP_EOL,
'crlf'=>"\r\n"
);
上述数据可以存放在config文件夹中以email.php命名进行存放
$this->load->library('email');
$this->email->set_newline("\r\n");
$this->email->from('zhouddxg@163.com', '白骑士');
$this->email->to('1034174930@qq.com');
$this->email->subject('北京****有限公司'); // 发送标题
$this->email->message($send_msg); // 内容
$this->email->send();
$status = $this->email->print_debugger();
if($status){
echo json_encode(array('status'=>1,'message'=>'验证码发送成功,请注意查收'));;return false;
} else {
echo json_encode(array('status'=>0,'message'=>'验证码发送失败,请重新发送'));return false;
}
需注意的是 若只需发送文字$coonfig['wordwrap'] = 'text' 需要发送html模板的时候$coonfig['wordwrap'] = 'html' ;
填写腾讯邮箱开启POP3/SMTP服务时的授权码,即核对密码正确 在邮箱设置 账号里面
即在email中编码和我们使用的编码不一样,会导致标题输入过长的时候会导致乱码
在email类中 在subject方法中将$subject = $this->_prep_q_encoding($subject); 改为$subject = '=?'. $this->charset .'?B?'. base64_encode($subject) .'?='; 已验证
网上还有一种方法
在CI的Email类1297行有一行代码:
- $limit = 75 - 7 - strlen($this->charset);
我把代码中的75改成:
- $limit = 750 - 7 - strlen($this->charset);
未经验证 仅作参考