CodeIgniter发送带图像的电子邮件

时间:2013-09-05 10:39:20

标签: php codeigniter email attachment

我是CI的初学者。

这是我在welcome.php中的代码

class Welcome extends CI_Controller {


public function index()
{
$this->load->helper('url');
    $this->load->view('welcome_message');
}
public function emailSend()
{
$this->load->library('upload');
$this->load->library('email');

$config['upload_path'] = 'uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$this->upload->initialize($config);







$this->email->from($this->input->post('from'), $this->input->post('name'));
$this->email->to('taryar.t1@gmail.com');
//$this->email->cc('another@another-example.com');
//$this->email->bcc('them@their-example.com');

$this->email->subject($this->input->post('subject'));
$this->email->message($this->input->post('body'));

if($this->upload->do_upload())
{
    $attachdata=$this->upload->data();
$this->email->attach($attachdata['full_path']);
}

if($this->email->send())
    {
        echo 'Your email was sent, successfully.';
    }

    else
    {
        show_error($this->email->print_debugger());
    }

}
}

/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */

此代码仅适用于文本,不适用于附件(图像)。 错误是“无法使用PHP邮件发送电子邮件()。您的服务器可能未配置为使用此方法发送邮件。”

我该如何解决这个错误? 帮帮我吧。

3 个答案:

答案 0 :(得分:1)

        $config['charset'] = 'iso-8859-1';
        $config['wordwrap'] = TRUE;
        $config['mailtype'] = 'html';

        $this->email->initialize($config);
        $to = $this->input->post('to'); // email@gmail.com
        $cc = 'email@gmail.com'; // email@gmail.com
        $subject = $this->input->post('subject');
        $message = $this->input->post('message');

        $this->email->to($to);
        $this->email->cc($cc);
        $this->email->from('info@awandevelopers.com','Awan Developers');
        $this->email->subject($subject);
        $this->email->message($message);


        $config['upload_path'] = './attachments/'; // or you can use any folder like uploads
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '1000';
        $config['max_width']  = '1024';
        $config['max_height']  = '768'; 
        $config['encrypt_name']     = true;
        $this->load->library('upload', $config);

        if(!$this->upload->do_upload('files')) // files will be input attachment field name
        {
            $this->upload->display_errors();
        }else{
            $image_data = $this->upload->data();
            $fname=$image_data['file_name'];
            $fpath=$image_data['file_path'].$fname;
            $this->email->attach($fpath);

            if ($this->email->send()){
                echo "Mail Sent!";
            }
            else{
                echo "There is error in sending mail!";
            }
        }   

答案 1 :(得分:0)

从官方文档中试试这个..

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

答案 2 :(得分:0)

$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|jpeg|png|txt|php|pdf';
$config['max_size']         = '9000';
$config['encrypt_name']     = true;

$image_data = $this->upload->data();
$fname=$image_data['file_name'];
$fpath=$image_data['file_path'].$fname;

$this->email->attach($fpath);

以上代码将解决您的问题。我也遇到同样的问题。这是因为您保存在文件夹中的文件名称不同,因为您附加上述代码将解决它,因为它采用了uploads文件夹的正确路径。请注意,uploads文件夹应该是root。