using the PHP multibyte extension for sending UTF-8 proper mails

This commit is contained in:
RobbBienert 2013-10-17 00:34:03 +02:00
parent e092d11e5d
commit 5f7f13d3ee

View file

@ -65,9 +65,12 @@ class Jlog_Mail
*/ */
function Jlog_Mail() function Jlog_Mail()
{ {
# XXX don't know if needed
mb_internal_encoding('UTF-8');
$this->_from = 'no-reply@' . $_SERVER['SERVER_NAME']; $this->_from = 'no-reply@' . $_SERVER['SERVER_NAME'];
$this->_subject = 'Kein Betreff - No Subject'; $this->_subject = 'Kein Betreff - No Subject';
$this->addHeader('MIME-Version', '1.0'); #XXX$this->addHeader('MIME-Version', '1.0');
$this->addHeader('Content-Type', 'text/plain; charset=UTF-8'); $this->addHeader('Content-Type', 'text/plain; charset=UTF-8');
$this->addHeader('Content-Transfer-Encoding', '8bit'); $this->addHeader('Content-Transfer-Encoding', '8bit');
$this->addHeader('X-Mailer', 'Jlog with PHP ' . phpversion()); $this->addHeader('X-Mailer', 'Jlog with PHP ' . phpversion());
@ -84,7 +87,8 @@ class Jlog_Mail
function setFrom($email, $name) function setFrom($email, $name)
{ {
if (!empty($email) and !empty($name)) { if (!empty($email) and !empty($name)) {
$this->_from = "$name <$email>"; # XXX
$this->_from = mb_encode_mimeheader($name) . " <$email>";
} }
} }
@ -233,7 +237,8 @@ class Jlog_Mail
// remove line breaks to prevent header injection // remove line breaks to prevent header injection
$value = str_replace(array("\r", "\n"), '', $value); $value = str_replace(array("\r", "\n"), '', $value);
// add header // add header
$headers .= "$key: $value\r\n"; #XXX$headers .= "$key: $value\r\n";
$headers .= "$key: $value\n";
} }
return $headers; return $headers;
} }
@ -267,10 +272,10 @@ class Jlog_Mail
$safe_mode = strtolower(ini_get('safe_mode')); $safe_mode = strtolower(ini_get('safe_mode'));
if ($safe_mode == 1 or $safe_mode == 'on' or $safe_mode == 'yes') { if ($safe_mode == 1 or $safe_mode == 'on' or $safe_mode == 'yes') {
@mail($to, $this->_subject, $this->_text, $this->getCleanHeaderString()); @mb_send_mail($to, $this->_subject, $this->_text, $this->getCleanHeaderString());
} }
else { else {
@mail($to, $this->_subject, $this->_text, $this->getCleanHeaderString(), "-f".JLOG_EMAIL); @mb_send_mail($to, $this->_subject, $this->_text, $this->getCleanHeaderString(), "-f".JLOG_EMAIL);
} }
return true; return true;
} }