emailAddress = $emailAddress; $this->customSmtpServer = $customSmtpServer; } public static function factory($emailAddress, $customSmtpServer = false) { return new SS_LogEmailWriter($emailAddress, $customSmtpServer); } /** * @deprecated 4.0 Use the "SS_LogEmailWriter.send_from" config setting instead */ public static function set_send_from($address) { Deprecation::notice('4.0', 'Use the "SS_LogEmailWriter.send_from" config setting instead'); Config::inst()->update('SS_LogEmailWriter', 'send_from', $address); } /** * @deprecated 4.0 Use the "SS_LogEmailWriter.send_from" config setting instead */ public static function get_send_from() { Deprecation::notice('4.0', 'Use the "SS_LogEmailWriter.send_from" config setting instead'); return Config::inst()->get('SS_LogEmailWriter', 'send_from'); } /** * Send an email to the email address set in * this writer. */ public function _write($event) { // If no formatter set up, use the default if(!$this->_formatter) { $formatter = new SS_LogErrorEmailFormatter(); $this->setFormatter($formatter); } $formattedData = $this->_formatter->format($event); $subject = $formattedData['subject']; $data = $formattedData['data']; $from = Config::inst()->get('SS_LogEmailWriter', 'send_from'); // override the SMTP server with a custom one if required $originalSMTP = ini_get('SMTP'); if($this->customSmtpServer) ini_set('SMTP', $this->customSmtpServer); // Use plain mail() implementation to avoid complexity of Mailer implementation. // Only use built-in mailer when we're in test mode (to allow introspection) $mailer = Email::mailer(); if($mailer instanceof TestMailer) { $mailer->sendHTML( $this->emailAddress, null, $subject, $data, null, "Content-type: text/html\nFrom: " . $from ); } else { mail( $this->emailAddress, $subject, $data, "Content-type: text/html\nFrom: " . $from ); } // reset the SMTP server to the original if($this->customSmtpServer) ini_set('SMTP', $originalSMTP); } }