After Send email with codeigniter and Send email with codeigniter and smtp today we gonna look how to send email with attachment. Before we start i hope you know how to upload image in codeigniter. Because this tutorial is combination of the send email with codeigniter and upload image or attachment in folder. So let's start with controller i.e. Send_email.php
Now lets start with view i.e. email_view.php
After filling all form when user click on submit function goes to sendEmail function which is written inside Send_email controller. To send attachment with email we use attach() function of email library.
This above function enables you to send an attachment. Put the file path/name in the first parameter. Note: Use a file path, not a URL. For multiple attachments use the function multiple times. To pass file path we have to upload attachment in folder and make sure folder must be writable (666, or 777). After uploading attachment we get all uploaded data in $upload_data. $upload_data is array we need only full_path key value to do we have do something like this
After that we are ready to send email to user with attachment.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Send_email extends CI_Controller { function __construct(){ parent::__construct(); } public function sendEmail() { if($this->input->post('send_email') == 'send_email'){ $this->load->library('email'); $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '100000'; $config['max_width'] = '1024'; $config['max_height'] = '768'; $this->load->library('upload', $config); $this->upload->do_upload('attachment'); $upload_data = $this->upload->data(); $this->email->attach($upload_data['full_path']); $this->email->set_newline("\r\n"); $this->email->set_crlf("\r\n"); $this->email->from('only4ututorials@gmail.com'); // change it to yours $this->email->to($this->input->post('email_id')); // change it to yours $this->email->subject($this->input->post('subject')); $this->email->message($this->input->post('body')); if ($this->email->send()) { echo "Mail Send"; return true; } else { show_error($this->email->print_debugger()); } }else{ $this->load->view('email_view'); } } }
Now lets start with view i.e. email_view.php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Mass Email Example</title> <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> <script src="//code.jquery.com/jquery-1.11.3.min.js"></script> <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> </head> <body> <div class="container"> <h1>Email Example With attchment</h1> <form action="<?php echo base_url()?>senddatabase_email/sendMassEmail" method="POST" enctype='multipart/form-data'> <div class="form-group"> <label for="exampleInputEmail1">Enter Email</label> <input type="email" class="form-control" placeholder="Enter Email id" name="email_id"/> </div> <div class="form-group"> <label for="exampleInputEmail1">Enter Subject</label> <input type="text" class="form-control" placeholder="Enter Email Subject" name="subject"/> </div> <div class="form-group"> <label for="exampleInputPassword1">Body Content</label> <textarea class="form-control" rows="3" placeholder="Enter Email Body Content" name="body"></textarea> </div> <div class="form-group"> <label for="exampleInputFile">File input</label> <input type="file" id="exampleInputFile" name="attachment"> </div> <button type="submit" name="send_email" value="send_email" class="btn btn-default">Submit</button> </form> </div> </body> </html>
After filling all form when user click on submit function goes to sendEmail function which is written inside Send_email controller. To send attachment with email we use attach() function of email library.
$this->email->attach()
This above function enables you to send an attachment. Put the file path/name in the first parameter. Note: Use a file path, not a URL. For multiple attachments use the function multiple times. To pass file path we have to upload attachment in folder and make sure folder must be writable (666, or 777). After uploading attachment we get all uploaded data in $upload_data. $upload_data is array we need only full_path key value to do we have do something like this
$upload_data = $this->upload->data(); $this->email->attach($upload_data['full_path']);
After that we are ready to send email to user with attachment.
Please comment down below if you have any query and please follows us for more awesome tutorials and keep motivating us .