annuaire recherche
欢迎 目录 快速参考图 基本信息 服务器要求 许可协议 变更记录 关于CodeIgniter 安装 下载 CodeIgniter 安装指导 从老版本升级 疑难解答 介绍 开始 CodeIgniter 是什么? CodeIgniter 速记表 支持特性 应用程序流程图 模型-视图-控制器 架构目标 教程 内容提要 加载静态内容 创建新闻条目 读取新闻条目 结束语 常规主题 CodeIgniter URL 控制器 保留字 视图 模型 辅助函数 使用 CodeIgniter 类库 创建你自己的类库 使用 CodeIgniter 适配器 创建适配器 创建核心系统类 钩子 - 扩展框架的核心 自动装载资源 公共函数 URI 路由 错误处理 缓存 调试应用程序 以CLI方式运行 管理应用程序 处理多环境 PHP替代语法 安全 开发规范 类库参考 基准测试类 日历类 购物车类 配置类 Email 类 加密类 文件上传类 表单验证详解 FTP 类 图像处理类 输入类 Javascript 类 语言类 装载类 迁移类 输出类 分页类 模板解析器类 安全类 Session 类 HTML 表格类 引用通告类 排版类 单元测试类 URI 类 User-Agent 类 表单验证 XML-RPC 和 XML-RPC 服务器 Zip 编码类 缓存适配器 适配器参考 适配器 数据库类 Active Record 类 数据库缓存类 自定义函数调用 数据库配置 连接你的数据库 数据库快速入门例子代码 字段数据 数据库维护类 查询辅助函数 数据库类 查询 生成查询记录集 表数据 事务 数据库工具类 JavaScript类 辅助函数参考 数组辅助函数 CAPTCHA 辅助函数 Cookie Helper 日期辅助函数 目录辅助函数 下载辅助函数 Email 辅助函数 文件辅助函数 表单辅助函数 HTML辅助函数 Inflector 辅助函数 语言辅助函数 数字辅助函数 路径辅助函数 安全辅助函数 表情辅助函数 字符串辅助函数 文本辅助函数 排版辅助函数 URL 辅助函数 XML 辅助函数
personnages

CodeIgniter 用户指南 版本 2.1.0

编辑文档、查看近期更改请 登录 或 注册  找回密码
查看原文

Email 类

CodeIgniter 拥有强大的 Email 类来提供如下的功能:

  • 多协议:Mail、Sendmail 和 SMTP
  • 多个收件人
  • 抄送和密送
  • HTML 或纯文本邮件
  • 附件
  • 自动换行
  • 邮件优先级
  • 密送批处理模式,开启时,大邮件列表将被分成小批次密送。
  • Email 调试工具

发送邮件

发送邮件不仅简单,而且可以发送时进行配置或者将参数放到配置文件中。

这里是一个发送邮件的标准示例。注意:该示例是假定使用一个控制器来发送邮件。

$this->load->library('email');

$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
$this->email->cc('another@another-example.com');
$this->email->bcc('them@their-example.com');

$this->email->subject('Email Test');
$this->email->message('Testing the email class.');

$this->email->send();

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

设置 Email 参数

有17个不同的有效参数来提供给你如何定制你发送的电子邮件。您可以在此手动设置,或自动通过你储存在的配置文件中的来设置,描述如下:

参数设定通过一系列的参数值去完成电子邮件的initialize功能。这里有一个例子,说明怎样设置一些参数设定:

$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;

$this->email->initialize($config);

说明: 大多数参数都有默认值,如果你没有配置这些参数,它们的默认值就会被使用。

在配置文件中设置 Email 参数

如果您不想使用使用上述方法设定参数,您可以把它们放入一个配置文件。创建一个新文件称为email.php ,添加$config数组在该文件中。然后将该文件保存为config/email.php 它将自动的被使用。如果您保存了一个参数配置文件,就不需要使用$this->email->initialize()函数来初始化参数了

Email 参数

下面是发送电子邮件时可以设置的属性的列表。

参数 默认值 选项 描述
useragent CodeIgniter 用户代理 "user agent"。
protocol mail mail, sendmail, or smtp 邮件发送协议。
mailpath /usr/sbin/sendmail 服务器上 Sendmail 的实际路径。protocol 为 sendmail 时使用。
smtp_host 无默认值 SMTP 服务器地址。
smtp_user 无默认值 SMTP 用户账号。
smtp_pass 无默认值 SMTP 密码。
smtp_port 25 SMTP 端口。
smtp_timeout 5 SMTP 超时设置(单位:秒)。
wordwrap TRUE TRUE 或 FALSE (布尔值) 开启自动换行。
wrapchars 76 自动换行时每行的最大字符数。
mailtype text text 或 html 邮件类型。发送 HTML 邮件比如是完整的网页。请确认网页中是否有相对路径的链接和图片地址,它们在邮件中不能正确显示。
charset utf-8 字符集(utf-8, iso-8859-1 等)。
validate FALSE TRUE 或 FALSE (布尔值) 是否验证邮件地址。
priority 3 1, 2, 3, 4, 5 Email 优先级. 1 = 最高. 5 = 最低. 3 = 正常.
crlf \n "\r\n" or "\n" or "\r" 换行符. (使用 "\r\n" to 以遵守RFC 822).
newline \n "\r\n" or "\n" or "\r" 换行符. (使用 "\r\n" to 以遵守RFC 822).
bcc_batch_mode FALSE TRUE or FALSE (boolean) 启用批量暗送模式.
bcc_batch_size 200 None 批量暗送的邮件数.

Email 函数参考

$this->email->from()

设置发件人email地址和名称:

$this->email->from('you@example.com', 'Your Name');

$this->email->reply_to()

设置邮件回复地址. 如果没有提供这个信息,将会使用"from()"函数中的值. 例如:

$this->email->reply_to('you@example.com', 'Your Name');

$this->email->to()

设置收件人email地址(多个). 地址可以是单个、一个以逗号分隔的列表或是一个数组:

$this->email->to('someone@example.com'); $this->email->to('one@example.com, two@example.com, three@example.com'); $list = array('one@example.com', 'two@example.com', 'three@example.com');

$this->email->to($list);

$this->email->cc()

设置抄送(Carbon Copy / CC) email地址(多个). 类似to()函数, 地址可以是单个、一个以逗号分隔的列表或是一个数组.

$this->email->bcc()

设置暗送(Blind Carbon Copy / BCC) email地址(多个). 类似to()函数, 地址可以是单个、一个以逗号分隔的列表或是一个数组.

$this->email->subject()

设置email主题:

$this->email->subject('This is my subject');

$this->email->message()

设置email正文部分:

$this->email->message('This is my message');

$this->email->set_alt_message()

设置可选的邮件EMAIL正文部分:

$this->email->set_alt_message('This is the alternative message');

这是EMAIL可选的一部分,如果你发送带HTML的邮件,这可以用到。它用于当接收邮件都不支持HTML格式时显示给用户的内容。如果你没有设置这部分,CodeIginiter会自动从邮件正文中提取去掉TAGS的部分。

$this->email->clear()

将所有EMAIL的变量清空. 这个方法用于当你在循环中发送邮件时,可以在两次循环中重新设置邮件内容。

foreach ($list as $name => $address)
{
    $this->email->clear();

    $this->email->to($address);
    $this->email->from('your@example.com');
    $this->email->subject('Here is your info '.$name);
    $this->email->message('Hi '.$name.' Here is the info you requested.');
    $this->email->send();
}

如果将参数设为TRUE,附件也会被清空:

$this->email->clear(TRUE);

$this->email->send()

发送EMAIL. 根据发送结果,成功返回TRUE,失败返回FALSE。就可以将它用于判断语句:

if ( ! $this->email->send())
{
    // Generate error
}

$this->email->attach()

添加附件。第一个参数是文件路径/文件名. 注意: 用路径而不是URL。多次使用该函数可以添加多个附件:

$this->email->attach('/path/to/photo1.jpg');
$this->email->attach('/path/to/photo2.jpg');
$this->email->attach('/path/to/photo3.jpg');

$this->email->send();

$this->email->print_debugger()

返回包含邮件内容的字符串,包括EMAIL头和EMAIL正文。用于调试。

取消自动换行

如果你启用自动换行(建议遵循 RFC 822),EMAIL中有一个非常长的链接它将会换行,导致链接不能被收信人直接点击打开。CodeIgniter可以对正文的部分片段避免这种自动换行,比如:

The text of your email that
gets wrapped normally.

{unwrap}http://example.com/a_long_link_that_should_not_be_wrapped.html{/unwrap}

More text that will be
wrapped normally.

将你不想自动换行的部分放入: {unwrap} {/unwrap}中间

 

翻译贡献者: 498621, Hex, ianyang, imjie, kele_87, larryli, roln, sygb, xjflyttp, xluohome, yinzhili, yygcom
最后修改: 2011-03-16 19:39:56
Article précédent: Article suivant: