From d2828bab0792ce945f658e3fa66a62341c582d5e Mon Sep 17 00:00:00 2001
From: Randolph Carter <RandolphCarter@fantasymail.de>
Date: Wed, 19 Dec 2012 01:09:14 +0100
Subject: [PATCH] fixes default email sender address

---
 core/ajax/share.php              |  6 +-----
 core/lostpassword/controller.php |  2 +-
 lib/public/util.php              | 36 ++++++++++++++++++++++++++++++++
 3 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/core/ajax/share.php b/core/ajax/share.php
index 12206e0fd7..72ffc52e99 100644
--- a/core/ajax/share.php
+++ b/core/ajax/share.php
@@ -89,12 +89,8 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
 			if ($type === 'dir')
 				$text = (string)$l->t('User %s shared the folder "%s" with you. It is available for download here: %s', array($user, $file, $link));
 
-			// handle localhost installations
-			$server_host = OCP\Util::getServerHost();
-			if ($server_host === 'localhost')
-				$server_host = "example.com";
 
-			$default_from = 'sharing-noreply@' . $server_host;
+			$default_from = OCP\Util::getDefaultEmailAddress('sharing-noreply');
 			$from_address = OCP\Config::getUserValue($user, 'settings', 'email', $default_from );
 
 			// send it out now
diff --git a/core/lostpassword/controller.php b/core/lostpassword/controller.php
index 523520dc75..e64b16d3b8 100644
--- a/core/lostpassword/controller.php
+++ b/core/lostpassword/controller.php
@@ -43,7 +43,7 @@ class OC_Core_LostPassword_Controller {
 				$tmpl->assign('link', $link, false);
 				$msg = $tmpl->fetchPage();
 				$l = OC_L10N::get('core');
-				$from = 'lostpassword-noreply@' . OCP\Util::getServerHost();
+				$from = OCP\Util::getDefaultEmailAddress('lostpassword-noreply');
 				OC_Mail::send($email, $_POST['user'], $l->t('ownCloud password reset'), $msg, $from, 'ownCloud');
 				echo('Mailsent');
 
diff --git a/lib/public/util.php b/lib/public/util.php
index 7b5b1abbde..9727cfda28 100644
--- a/lib/public/util.php
+++ b/lib/public/util.php
@@ -172,6 +172,42 @@ class Util {
 		return(\OC_Request::serverHost());
 	}
 
+	/**
+	 * @brief returns the server hostname
+	 * @returns the server hostname
+	 *
+	 * Returns the server host name without an eventual port number
+	 */
+	public static function getServerHostName() {
+		$host_name = self::getServerHost();
+		// strip away port number (if existing)
+		$colon_pos = strpos($host_name, ':');
+		if ($colon_pos != FALSE) {
+			$host_name = substr($host_name, 0, $colon_pos);
+		}
+		return $host_name;
+	}
+
+	/**
+	 * @brief Returns the default email address
+	 * @param $user_part the user part of the address
+	 * @returns the default email address 
+	 *
+	 * Assembles a default email address (using the server hostname
+	 * and the given user part, and returns it
+	 * Example: when given lostpassword-noreply as $user_part param,
+	 *     and is currently accessed via http(s)://example.com/,
+	 *     it would return 'lostpassword-noreply@example.com'
+	 */
+	public static function getDefaultEmailAddress($user_part) {
+		$host_name = self::getServerHostName();
+		// handle localhost installations
+		if ($server_host === 'localhost') {
+			$server_host = "example.com";
+		}
+		return $user_part.'@'.$host_name;
+	}
+
 	/**
 	 * @brief Returns the server protocol
 	 * @returns the server protocol
-- 
GitLab