CodeIgniter 发送电子邮件


在 CodeIgniter 中发送电子邮件是很容易的,你还可以在 CodeIgniter 中配置有关电子邮件的首选项。 CodeIgniter 提供以下发送邮件的功能:

  • 多种协议:Mail、Sendmail 和 SMTP

  • SMTP 的 TLS 和 SSL 加密

  • 多个收件人

  • 抄送和密送

  • HTML 或纯文本电子邮件

  • 附件

  • 自动换行

  • 优先事项

  • 密件抄送批处理模式,允许将大型电子邮件列表分解为小密件抄送批次。

  • 电子邮件调试工具

电子邮件类具有以下功能以简化发送电子邮件的工作。

S.N.语法参数Return返回类型
1from( $from [, $name = '' [, $return_path = NULL ]])

$from( string ):“发件人”电子邮件地址

$name( string ):“发件人”显示名称

$return_path( string ): 可选的电子邮件地址,用于将未送达的电子邮件重定向到

CI_Email 实例(方法链)CI_Email
2reply_to( $replyto [, $name = '' ])

$replyto( string ): 回复邮件地址

$name( string ):回复邮件地址的显示名称

CI_Email 实例(方法链)CI_Email
2to( $to )

$to( mixed ): 逗号分隔的字符串或电子邮件地址数组

CI_Email 实例(方法链)CI_Email
3cc( $cc )

$cc( mixed ): 逗号分隔的字符串或电子邮件地址数组

CI_Email 实例(方法链)CI_Email
4bcc( $bcc [, $limit = '' ])

$bcc( mixed ): 逗号分隔的字符串或电子邮件地址数组

$limit( int ): 每批发送的最大邮件数

CI_Email 实例(方法链)CI_Email
5subject( $subject )

$subject( string ): 电子邮件主题行

CI_Email 实例(方法链)CI_Email
6message( $body )

$body( string ): 邮件正文

CI_Email 实例(方法链)CI_Email
7set_alt_message( $str )

$str( string ): 替代邮件正文

CI_Email 实例(方法链)CI_Email
8set_header( $header, $value )

$header( string ): 标题名称

$value( string ): 标题值

CI_Email 实例(方法链)CI_Email
9clear([ $clear_attachments = FALSE ])

$clear_attachments( bool ) – 是否清除附件

CI_Email 实例(方法链)CI_Email
10send([ $auto_clear = true ])

$auto_clear( bool ): 是否自动清除短信数据

CI_Email 实例(方法链)CI_Email
11attach($filename[, $disposition = ''[, $newname = NULL[, $mime = '']]])

$filename( string ): 文件名

$disposition( string ):附件的‘处置’。无论此处使用的 MIME 规范如何,大多数电子邮件客户端都会做出自己的决定。 iana

$newname( string ):电子邮件中使用的自定义文件名

$mime( string ):要使用的 MIME 类型(用于缓冲数据)

CI_Email 实例(方法链)CI_Email
12attachment_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