CodeIgniter 发送电子邮件
在 CodeIgniter 中发送电子邮件是很容易的,你还可以在 CodeIgniter 中配置有关电子邮件的首选项。 CodeIgniter 提供以下发送邮件的功能:
多种协议:Mail、Sendmail 和 SMTP
SMTP 的 TLS 和 SSL 加密
多个收件人
抄送和密送
HTML 或纯文本电子邮件
附件
自动换行
优先事项
密件抄送批处理模式,允许将大型电子邮件列表分解为小密件抄送批次。
电子邮件调试工具
电子邮件类具有以下功能以简化发送电子邮件的工作。
S.N. | 语法 | 参数 | Return | 返回类型 |
---|---|---|---|---|
1 | from( $from [, $name = '' [, $return_path = NULL ]]) | $from( string ):“发件人”电子邮件地址 $name( string ):“发件人”显示名称 $return_path( string ): 可选的电子邮件地址,用于将未送达的电子邮件重定向到 | CI_Email 实例(方法链) | CI_Email |
2 | reply_to( $replyto [, $name = '' ]) | $replyto( string ): 回复邮件地址 $name( string ):回复邮件地址的显示名称 | CI_Email 实例(方法链) | CI_Email |
2 | to( $to ) | $to( mixed ): 逗号分隔的字符串或电子邮件地址数组 | CI_Email 实例(方法链) | CI_Email |
3 | cc( $cc ) | $cc( mixed ): 逗号分隔的字符串或电子邮件地址数组 | CI_Email 实例(方法链) | CI_Email |
4 | bcc( $bcc [, $limit = '' ]) | $bcc( mixed ): 逗号分隔的字符串或电子邮件地址数组 $limit( int ): 每批发送的最大邮件数 | CI_Email 实例(方法链) | CI_Email |
5 | subject( $subject ) | $subject( string ): 电子邮件主题行 | CI_Email 实例(方法链) | CI_Email |
6 | message( $body ) | $body( string ): 邮件正文 | CI_Email 实例(方法链) | CI_Email |
7 | set_alt_message( $str ) | $str( string ): 替代邮件正文 | CI_Email 实例(方法链) | CI_Email |
8 | set_header( $header, $value ) | $header( string ): 标题名称 $value( string ): 标题值 | CI_Email 实例(方法链) | CI_Email |
9 | clear([ $clear_attachments = FALSE ]) | $clear_attachments( bool ) – 是否清除附件 | CI_Email 实例(方法链) | CI_Email |
10 | send([ $auto_clear = true ]) | $auto_clear( bool ): 是否自动清除短信数据 | CI_Email 实例(方法链) | CI_Email |
11 | attach($filename[, $disposition = ''[, $newname = NULL[, $mime = '']]]) | $filename( string ): 文件名 $disposition( string ):附件的‘处置’。无论此处使用的 MIME 规范如何,大多数电子邮件客户端都会做出自己的决定。 iana $newname( string ):电子邮件中使用的自定义文件名 $mime( string ):要使用的 MIME 类型(用于缓冲数据) | CI_Email 实例(方法链) | CI_Email |
12 | attachment_cid( $filename ) | $filename( string ): 现有附件文件名 | 附件 Content-ID 或 FALSE(如果未找到) | string |
发送电子邮件
要使用 CodeIgniter 发送电子邮件,首先你必须使用以下命令加载电子邮件库:
$this->load->library('email');
加载该库后,只需执行以下函数来设置发送电子邮件的必要元素。from()函数用于设置:从哪里发送电子邮件,to()函数用于:向谁发送电子邮件,subject()和message()函数用于设置电子邮件的主题和信息。
$this->email->from('your@example.com', 'Your Name'); $this->email->to('someone@example.com'); $this->email->subject('Email Test'); $this->email->message('Testing the email class.');
之后,如下所示执行send()函数发送电子邮件。
$this->email->send();
创建控制器文件Email_controller.php并将其保存在application/controller/Email_controller.php。
<?php class Email_controller extends CI_Controller { function __construct() { parent::__construct(); $this->load->library('session'); $this->load->helper('form'); } public function index() { $this->load->helper('form'); $this->load->view('email_form'); } public function send_mail() { $from_email = "your@example.com"; $to_email = $this->input->post('email'); // 加载邮件库 $this->load->library('email'); $this->email->from($from_email, 'Your Name'); $this->email->to($to_email); $this->email->subject('Email Test'); $this->email->message('Testing the email class.'); // 发送邮件 if($this->email->send()) $this->session->set_flashdata("email_sent","Email sent successfully."); else $this->session->set_flashdata("email_sent","Error in sending Email."); $this->load->view('email_form'); } } ?>
创建一个名为email_form.php的视图文件,并将其保存在application/views/email_form.php
<!DOCTYPE html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>CodeIgniter Email 例子</title> </head> <body> <?php echo $this->session->flashdata('email_sent'); echo form_open('/Email_controller/send_mail'); ?> <input type = "email" name = "email" required /> <input type = "submit" value = "SEND MAIL"> <?php echo form_close(); ?> </body> </html>
修改application/config/routes.php中的routes.php文件进行,并在文件末尾添加以下一行。
$route['email'] = 'Email_Controller';
将 yoursite.com 替换为你站点的 URL,通过访问以下链接执行上述示例。
http://yoursite.com/index.php/email