load->library('crypt'); // Create the basic mailer object $mail = new PHPMailer(); $mail->CharSet = 'UTF-8'; $mail->isHTML(); switch (get_setting('email_send_method')) { case 'smtp': $mail->IsSMTP(); // Set the basic properties $mail->Host = get_setting('smtp_server_address'); $mail->Port = get_setting('smtp_port'); // Is SMTP authentication required? if (get_setting('smtp_authentication')) { $mail->SMTPAuth = true; $decoded = $CI->crypt->decode($CI->mdl_settings->get('smtp_password')); $mail->Username = get_setting('smtp_username'); $mail->Password = $decoded; } // Is a security method required? if (get_setting('smtp_security')) { $mail->SMTPSecure = get_setting('smtp_security'); } // Check if certificates should not be verified if (!get_setting('smtp_verify_certs', true)) { $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) ); } break; case 'sendmail': $mail->IsMail(); break; case 'phpmail': case 'default': $mail->IsMail(); break; } $mail->Subject = $subject; $mail->Body = $message; if (is_array($from)) { // This array should be address, name $mail->setFrom($from[0], $from[1]); } else { // This is just an address $mail->setFrom($from); } // Allow multiple recipients delimited by comma or semicolon $to = (strpos($to, ',')) ? explode(',', $to) : explode(';', $to); // Add the addresses foreach ($to as $address) { $mail->addAddress($address); } if ($cc) { // Allow multiple CC's delimited by comma or semicolon $cc = (strpos($cc, ',')) ? explode(',', $cc) : explode(';', $cc); // Add the CC's foreach ($cc as $address) { $mail->addCC($address); } } if ($bcc) { // Allow multiple BCC's delimited by comma or semicolon $bcc = (strpos($bcc, ',')) ? explode(',', $bcc) : explode(';', $bcc); // Add the BCC's foreach ($bcc as $address) { $mail->addBCC($address); } } if (get_setting('bcc_mails_to_admin') == 1) { // Get email address of admin account and push it to the array $CI->load->model('users/mdl_users'); $CI->db->where('user_id', 1); $admin = $CI->db->get('ip_users')->row(); $mail->addBCC($admin->user_email); } // Add the attachment if supplied if ($attachment_path && get_setting('email_pdf_attachment')) { $mail->addAttachment($attachment_path); } // Add the other attachments if supplied if ($more_attachments) { foreach ($more_attachments as $paths) { $mail->addAttachment($paths['path'], $paths['filename']); } } // And away it goes... if ($mail->send()) { $CI->session->set_flashdata('alert_success', 'The email has been sent'); return true; } else { // Or not... $CI->session->set_flashdata('alert_error', $mail->ErrorInfo); return false; } }