用户
 找回密码
 入住 CI 中国社区
搜索
查看: 7406|回复: 9
收起左侧

[库 Library] 分享CI群发邮件类库,欢迎测试

[复制链接]
发表于 2010-3-21 01:30:21 | 显示全部楼层 |阅读模式
本帖最后由 baiyuxiong 于 2010-4-30 18:58 编辑

类库代码
PHP复制代码
 
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
class CI_Sendmail {
 
 
var $_config = Array(
 
'protocol' => 'smtp',
 
'smtp_host' => 'smtp.163.com',
 
'smtp_port' => 25,
 
'smtp_user' => 'xxxxxx@163.com',
 
'smtp_pass' => 'xxxxx',
 
'charset' => 'GBK',
 
'mailtype' => 'html',
 
);
 
var $CI;
 
/**
 
 * Constructor
 
 *
 
 * @access
public
 
 */

 
function CI_Sendmail()
 
{
 
$this->CI =& get_instance();
 
$this->CI->load->library('email',$this->_config);
 
}
 
 
function SendM($maillist)
 
{
                foreach($maillist as $mailinfo)                {                       $this->CI->email->set_newline("rn");
                        $from_name = "xxx网站";//发件人名称
                        $email_subject ="欢迎加入XXX";
                        $email_msg="<br>".$this->_Get_Reg_Template($mailinfo['username'],$mailinfo['active_url']);
                        //解决乱码问题
                        //$from_name = iconv('UTF-8','GBK',$from_name);
                        //$email_subject = iconv('UTF-8','GBK',$email_subject);
                        //$email_msg = iconv('UTF-8','GBK',$email_msg);
                        //封装发送信息
                        $this->CI->email->from('baiyuxiong@163.com',$from_name);
                        $this->CI->email->to($mailinfo['email']);
                        $this->CI->email->subject($email_subject);
                       $this->CI->email->message($email_msg);
                        //$this->email->attach("attachments/2009/01/1.xls");//附件
                        //发送
                   if (!$this->CI->email->send())
                       {
                                show_error($this->email->print_debugger());
                                //return false;
                        }
                        else
                        {
                                echo"OK";
                                //return true;
                        }
                }
 
}
 
function _Get_Reg_Template($username,$active_url)
 
{
 
return $username.':<br />欢迎注册XXX,请点击以下链接激您的账号:<br /><a href = "'.$active_url.'">'.$active_url.'</a>';
 
}
 
function _Get_Other_Template()
 
{
 
    //需要其它邮件模板自己定义
 
}
 
}
 
 
复制代码


控制器中使用:
PHP复制代码
 
 
function index()
 
{
 
$this->load->library('sendmail');
 
//$this->load->view('welcome_message');
//把所有邮件组合到这样的二维数组里,需要其它信息,可以类比扩展。
$maillist = array
 
(
 
'a'=>array(
 
'username'=>"Jesse",
 
'email'=>"ok@baiyuxiong.com",
 
'active_url'=>"active_url"
 
)
 
);
 
$this->sendmail->SendM($maillist);
 
}
 
 
复制代码


不需要发送结果显示的话,把类库里的输出注释掉。我自己测试没问题。

评分

参与人数 2威望 +6 收起 理由
haohailuo + 1
Hex + 5 原创内容

查看全部评分

发表于 2010-6-8 09:49:12 | 显示全部楼层
收藏~~收藏~~
发表于 2010-6-20 20:27:49 | 显示全部楼层
smtp似乎需要企业邮箱支持啊
 楼主| 发表于 2010-6-21 09:48:32 | 显示全部楼层
回复 3# snllll


   不需要企业邮箱支持,你随便申请一个免费邮箱也能用
发表于 2010-6-24 14:42:52 | 显示全部楼层
挺好玩的,申请个邮箱试一下
发表于 2011-1-13 17:05:16 | 显示全部楼层
靠,不能用呀!
发表于 2011-6-25 09:05:41 | 显示全部楼层
不能用 提示经过错误 :错误如下:

Message: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()

Filename: libraries/Email.php
发表于 2011-6-27 07:47:36 | 显示全部楼层
没意思。
发表于 2011-7-19 10:15:30 | 显示全部楼层
Severity: Notice

Message: fwrite(): send of 29 bytes failed with errno=10053 您的主机中的软件中止了一个已建立的连接。

Filename: libraries/Email.php

Line Number: 1816
发表于 2012-2-28 16:11:03 | 显示全部楼层
楼主试过用QQ邮箱发送没?

本版积分规则