PHP CI框架email类发送邮件

用CI框架发送邮件类 在中文标题太长的情况下会出现乱码,搜索后说是发送邮件的时候有标题长度的限制,按说的方法修改后,还是没能得到解决,后来发现需要转换邮件标题的编码,解决方法如下:

打开 libraries/Email.php  找到:function subject($subject)

public function subject($subject)
{
    $subject = $this->_prep_q_encoding($subject);
    $this->_set_header(‘Subject‘, $subject);
    return $this;
} 

修改为

public function subject($subject)
{
    //$subject = $this->_prep_q_encoding($subject);
    $subject = ‘=?‘. $this->charset .‘?B?‘. base64_encode($subject) .‘?=‘;
    $this->_set_header(‘Subject‘, $subject);
    return $this;
} 

代码为

function mail(){
        $this->load->library(‘email‘);
        $config[‘protocol‘] = ‘smtp‘;
        $config[‘smtp_host‘] = ‘ssl://smtp.gmail.com‘;
        $config[‘smtp_user‘] = ‘[email protected]‘;
        $config[‘smtp_pass‘] = ‘XXXXXXXXXXXXX‘;
        $config[‘smtp_port‘] = ‘465‘;
        $config[‘smtp_timeout‘] = ‘5‘;
        $config[‘newline‘] = "\r\n";
        $config[‘crlf‘] = "\r\n";
        $this->email->initialize($config); 

        $this->email->from(‘[email protected]‘);
        $this->email->to(‘[email protected]‘);
        $this->email->subject("北极bear北极bear北极bear北极bear北极bear北极bear北极bear北极bear北极bear北极bear北极bear");
        $this->email->message(‘哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈‘);
        $this->email->send(); 

        echo $this->email->print_debugger();
   } 

上面的解决方案,我将CI默认的对邮件标题(Subject)的编码方式从 Q-Encoding (简称 Q编码)变成了 Base64 (简称 B编码),希望能对大家有所帮助。如有问题欢迎留言讨论。

转自http://www.it300.com/article-8047.html

时间: 2024-10-15 03:40:54

PHP CI框架email类发送邮件的相关文章

CI框架分页类代码

model层 public function get_content($start,$num){            $sql   = "SELECT * FROM content limit  $start,$num";//$start=>每一页第一条数据所对应的索引;$num=>对应的每一页固定显示的条数            $query = $this->db->query($sql);            return $query->res

CI框架 输入类

1.$this->input->post() 第一个参数是所要取得的post中的数据: $this->input->post('some_data'); 如果数据不存在,方法将返回 FALSE (布尔值). 第二个参数是可选的,如果想让取得的数据经过跨站脚本过滤(XSS Filtering),把第二个参数设为TRUE. $this->input->post('some_data', TRUE); 不设置任何参数,该方法将以一个数组的形式返回全部POST过来的数据. 把第

利用CodeIgniter中的Email类发邮件

CodeIgniter拥有功能强大的Email类.以下为利用其发送邮件的代码. 关于CI的Email类的详情请参考:http://codeigniter.org.cn/user_guide/libraries/email.html 文件路径为/application/controllers/welcome.php <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Welcome ext

ci 框架发送邮箱

定义数据 $config = array(    'protocol' =>'smtp',    'smtp_host'=>'ssl://smtp.163.com',    'smtp_user'=>'[email protected]',    'smtp_pass'=>'***********',    'smtp_port'=>465,    'smtp_timeout'=>30,    'mailtype'=>'html',    'charset'=&g

CI框架增加条件搜索,分页

在网上找了半天,没有一个能写明白的,到的怎么使用带条件分页,我这里用简单说明实现它! 1.使用CI框架分页类,如果带搜索条件,首先要可以接收搜索内容 $cateid = $this->input->get_post('select_cate'); $searchkey = $this->input->get_post('searchkey'); $offset = $this->input->get_post('per_page'); 2.实现搜索分页代码 $this-

CI框架中,扩展验证码类。

使用CI框架的朋友,应该都知道CI框架的的验证码辅助函数,不太好用.它需要写入到数据库中,然后再进行比对. 大家在实际项目中,好像不会这样去使用,因为会对数据库造成一定的压力. 所以,我们还是利用session来临时存储验证码,比较的稳妥. 下面附上验证码类的代码.这个类是放在libraries这个库文件夹下. <?php /** * 验证码类 */ class Code{ //资源 private $img; //画布宽度 public $width = 150; //画布高度 public

CI框架中一个类中调用另一个类中已经加载对象测试

controller.php 1 <?php 2 class CI_Controller { 3 4 private static $instance; 5 6 public function __construct() 7 { 8 self::$instance =& $this; 9 10 foreach (is_loaded() as $var => $class) 11 { 12 $this->$var =& load_class($class); 13 $obj

二十七、CI框架之自己写分页类并加载(写分页还是有难度,搞了一整天)

一.我们写好自己的分页代码,防止library目录中,带构造函数 二.在模型中,添加2个函数,一个是查询数据的条数,第二个是取出数据库中的数据 三.在控制中,写入相应的代码,如下: 四.在界面中,写入代码 五.我们打开浏览器,就可以看到CI框架的分页已经被我们替换掉了,如图: 总结: 大家可以看到,目前我自己比较好用的一个分页类在CI中可以正常使用,但是翻页之后,是用的 [ ?page=6 ]这种形式来呈现的,和CI还是不符合,我们后续改进一下分页类的写法,符合CI的规范. 原文地址:https

ci框架(一)

ci目录结构                                                                                    |-----system 框架程序目录 |-----core 框架的核心程序 |-----CodeIgniter.php 引导性文件 |-----Common.php 加载基类库的公共函数 |-----Controller.php 基控制器类文件:CI_Controller |-----Model.php 基模型类文件