setEncryption($config['options']['encryption']); } // Do authentication, if part of the DSN empty($config['options']['username']) or $transport->setUsername($config['options']['username']); empty($config['options']['password']) or $transport->setPassword($config['options']['password']); // Set the timeout to 5 seconds $transport->setTimeout(empty($config['options']['timeout']) ? 5 : (int) $config['options']['timeout']); break; case 'sendmail': // Create a sendmail connection $transport = Swift_SendmailTransport::newInstance(empty($config['options']) ? "/usr/sbin/sendmail -bs" : $config['options']); break; default: // Use the native connection $transport = Swift_MailTransport::newInstance($config['options']); break; } // Create the SwiftMailer instance return Email::$mail = Swift_Mailer::newInstance($transport); } /** * Send an email message. * * @param string|array recipient email (and name), or an array of To, Cc, Bcc names * @param string|array sender email (and name) * @param string message subject * @param string message body * @param boolean send email as HTML * @return integer number of emails sent */ public static function send($to, $from, $subject, $message, $html = FALSE) { // Connect to SwiftMailer (Email::$mail === NULL) and email::connect(); // Determine the message type $html = ($html === TRUE) ? 'text/html' : 'text/plain'; // Create the message $message = Swift_Message::newInstance($subject, $message, $html, 'utf-8'); if (is_string($to)) { // Single recipient $message->setTo($to); } elseif (is_array($to)) { if (isset($to[0]) AND isset($to[1])) { // Create To: address set $to = array('to' => $to); } foreach ($to as $method => $set) { if ( ! in_array($method, array('to', 'cc', 'bcc'))) { // Use To: by default $method = 'to'; } // Create method name $method = 'add'.ucfirst($method); if (is_array($set)) { // Add a recipient with name $message->$method($set[0], $set[1]); } else { // Add a recipient without name $message->$method($set); } } } if (is_string($from)) { // From without a name $message->setFrom($from); } elseif (is_array($from)) { // From with a name $message->setFrom($from[0], $from[1]); } return Email::$mail->send($message); } } // End email