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行有一行代码: 

  1. $limit = 75 - 7 - strlen($this->charset); 

我把代码中的75改成: 

  1. $limit = 750 - 7 - strlen($this->charset); 

 未经验证  仅作参考

 

posted @ 2017-03-06 10:14  ddxg  阅读(340)  评论(0编辑  收藏  举报