Присоединение нескольких файлов / изображений к моей функции phpmailer в codeigniter - PullRequest
0 голосов
/ 01 мая 2020

Добрый день.

У меня есть форма, которая отображает всю информацию из моей БД с идентификатором, выбранным пользователем, а затем у меня есть кнопка, которая отправляет данные с phpmailer на электронную почту выбранных пользователей. В этой информации у меня есть изображения, которые загружаются на мой сервер, и путь к файлу в моей БД.

Что я не могу понять, так это как получить изображения / файлы, которые будут отправлены вместе с электронной почтой, когда пользователь нажимает кнопку прямого вызова.

Пожалуйста, если вы можете направить меня в правильном направлении, так как большая часть прочитанного мной поста относится к отдельным файлам / изображениям и добавлению его прямо из каталога.

My View View

Папка с изображениями [Folder with Images[2]

Изображения DB Image of DB

    My View

    '''<div class="col-lg-12">
                    <ul class="gallery">
                        <?php foreach($files as $row):
                            $images = explode(',', $row->files);
                                foreach($images as $files):?>
                                    <img src="<?= base_url() . "uploads/ob_images/$files"; ?>" width="250" height="250">
                            <?php endforeach; ?>
                        <?php endforeach; ?>
                    </ul>
                </div>
        </div>'''

My Controller
'''function forward_call($id){

            $data = array(

                'formTitle' => 'Forward Call',
                'title' => 'Call Management'
            );

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

            $this->form_validation->set_rules('call_attended_by', 'Call Attendad By', 'trim|required|callback_reason_for_update');

            if ($this->form_validation->run() === FALSE)
            {
                $data['supplier'] = $this->admin_model->get_supplier_list();
                $data['priority'] = $this->admin_model->get_priority_level();
                $data['camera'] = $this->admin_model->get_camera();
                $data["data"] = $this->admin_model->get_current_call('', '', $id);
                $results = $this->admin_model->get_supplier_list();
                $data['files'] = $this->admin_model->get_call_images($id);
                $this->load->view('frame/header_view');
                $this->load->view('frame/sidebar_nav_view');
                $this->load->view('helpdesk/forward_call', $data);         
            }
            else
            {

                $message = "Your assistants is needed with the following call.<br><br>

                <ins>Call ID:</ins> ".$_POST['id'].";<br><br>

                <ins>Date Call Was Logged At HTCC:</ins> ".$_POST['date_logged']."<br><br>

                <ins>Date Acknowledged By Technician:</ins> ".$_POST['date_logged']."<br><br>

                <ins>Technician:</ins> ".$_POST['call_attended_by']."<br><br>

                <ins>Call Status:</ins> ".$_POST['call_status']."<br><br>

                <ins>Call Status:</ins> ".$_POST['location']."<br><br>

                <ins>Call Priority:</ins> ".$_POST['priority_level']."<br><br>

                <ins>Type Of Equipment:</ins> ".$_POST['type_of_equipment']."<br><br>

                <ins>Call Description:</ins> ".$_POST['call_description']."<br><br>

                <ins>Fault Found:</ins> ".$_POST['fault_found']."<br><br>

                If you need any futher assists please contact Helpdesk or ".$_POST['call_attended_by']."<br><br>

                Thanks HTCC Helpdesk Team!!";

                $subject = "HTCC Call Assistants";
                    $this->admin_model->send_call($message,$subject,$_POST['email']);
                    $this->admin_model->forwarded_call($id);
                redirect( base_url('admin/open_call_list'));

            }'''

forward call
'''function forwarded_call($id = 0)
    {
        //$this->load->helper('url');


        $data = array(
            'id' => $this->input->post('id'),
            'call_attended_by' => $this->input->post('call_attended_by'),
            'date_acknowledged_by_tech' => $this->input->post('date_acknowledged_by_tech'),
            'priority' => $this->input->post('priority_level'),
            'supplier' => $this->input->post('supplier1'),
            'forwarded_to' => $this->input->post('supplier1'),
            'technician_email' => $this->input->post('technician_email'),
            'date_forwarded' => date("Y-m-d H:i:s"),
        );

                $message = "The call with ID".$_POST['id']." you have logged will be forwarded to ".$_POST['supplier1']." .<br><br>

                If you need any futher assists please contact ".$_POST['call_attended_by']." or Helpdesk;<br><br>

                Thanks HTCC Helpdesk Team!!";

                $subject = "HTCC Helpdesk";
                $this->admin_model->send_call($message,$subject,$_POST['user_email']);

        $module = "Helpdesk";
            $activity = "Call Forwarded".$data['supplier'];
            $this->insert_log($activity, $module);

        if ($id == 0) {
            return $this->db->insert('tbl_calls', $data);
        } else {
            $this->db->where('id', $id);
            return $this->db->update('tbl_calls', $data);
        }

    }'''

My Phpmailer

'''function send_call($message,$subject,$sendTo){
        require_once APPPATH.'libraries/mailer/class.phpmailer.php';
        require_once APPPATH.'libraries/mailer/class.smtp.php';
        require_once APPPATH.'libraries/mailer/mailer_config.php';
        include APPPATH.'libraries/mailer/template/template.php';

        $mail = new PHPMailer(true);
        $mail->IsSMTP();
        try
        {
            $mail->SMTPDebug = 1;  
            $mail->SMTPAuth = true; 
            $mail->SMTPSecure = 'ssl'; 
            $mail->Host = HOST;
            $mail->Port = PORT;  
            $mail->Username = GUSER;  
            $mail->Password = GPWD;     
            $mail->SetFrom(GUSER, 'Helpdesk');
            $mail->Subject = "DO NOT REPLY - ".$subject;
            $mail->IsHTML(true);   
            $mail->WordWrap = 0;


            $hello = '<h1 style="color:#333;font-family:Helvetica,Arial,sans-serif;font-weight:300;padding:0;margin:10px 0 25px;text-align:center;line-height:1;word-break:normal;font-size:38px;letter-spacing:-1px">Hello Team, &#9786;</h1>';
            $thanks = "<br><br><i>This is autogenerated email please do not reply.</i><br/><br/>Thanks,<br/>Helpdesk<br/><br/>";

            $body = $hello.$message.$thanks;
            $mail->Body = $header.$body.$footer;
            $mail->AddAddress($sendTo);

            if(!$mail->Send()) {
                $error = 'Mail error: '.$mail->ErrorInfo;
                return array('status' => false, 'message' => $error);
            } else { 
                return array('status' => true, 'message' => '');
            }
        }
        catch (phpmailerException $e)
        {
            $error = 'Mail error: '.$e->errorMessage();
            return array('status' => false, 'message' => $error);
        }
        catch (Exception $e)
        {
            $error = 'Mail error: '.$e->getMessage();
            return array('status' => false, 'message' => $error);
        }

    }'''

1 Ответ

2 голосов
/ 01 мая 2020

Вы еще не опубликовали код того, что вы уже пробовали, но я угадаю, что вам нужно.

Я предполагаю, что у вас уже есть какой-то базовый c почтовый скрипт, возможно, основываясь на примерах, предоставленных PHPMailer, таких как этот .

Похоже, ваша БД содержит несколько имен файлов в одном поле, поэтому вам нужно будет разделить их перед добавлением в качестве вложений. Я предполагаю, что вы выполнили какой-то запрос к БД, и текущая строка данных находится в $row.

$imageFolder = '/path/to/image/folder/';
$files = explode(',', $row['files']);
foreach ($files as $file) {
    $mail->addAttachment($imageFolder . $file);
}

Это все, что нужно для добавления файлов в качестве простых вложений.

...