protected function _sendEmail(array $user, array $email, Zend_Mail_Transport_Abstract $transport) { if (!$user['email']) { return false; } if (!XenForo_Application::get('config')->enableMail) { return true; } $options = XenForo_Application::getOptions(); XenForo_Db::ping(); $mailObj = new Zend_Mail('utf-8'); $mailObj->setSubject($email['email_title'])->addTo($user['email'], $user['username'])->setFrom($email['from_email'], $email['from_name']); $bounceEmailAddress = $options->bounceEmailAddress; if (!$bounceEmailAddress) { $bounceEmailAddress = $options->defaultEmailAddress; } $toEmail = $user['email']; $bounceHmac = substr(hash_hmac('md5', $toEmail, XenForo_Application::getConfig()->globalSalt), 0, 8); $mailObj->addHeader('X-To-Validate', "{$bounceHmac}+{$toEmail}"); if ($options->enableVerp) { $verpValue = str_replace('@', '=', $toEmail); $bounceEmailAddress = str_replace('@', "+{$bounceHmac}+{$verpValue}@", $bounceEmailAddress); } $mailObj->setReturnPath($bounceEmailAddress); if ($email['email_format'] == 'html') { $replacements = array('{name}' => htmlspecialchars($user['username']), '{email}' => htmlspecialchars($user['email']), '{id}' => $user['user_id']); $email['email_body'] = strtr($email['email_body'], $replacements); $text = trim(htmlspecialchars_decode(strip_tags($email['email_body']))); $mailObj->setBodyHtml($email['email_body'])->setBodyText($text); } else { $replacements = array('{name}' => $user['username'], '{email}' => $user['email'], '{id}' => $user['user_id']); $email['email_body'] = strtr($email['email_body'], $replacements); $mailObj->setBodyText($email['email_body']); } if (!$mailObj->getMessageId()) { $mailObj->setMessageId(); } $thisTransport = XenForo_Mail::getFinalTransportForMail($mailObj, $transport); try { $mailObj->send($thisTransport); } catch (Exception $e) { XenForo_Error::logException($e, false, "Email to {$user['email']} failed: "); return false; } return true; }