diff --git a/src/common/helpers.py b/src/common/helpers.py
index 23096817c31cfe54059e264982676680f2882e24..aed9e5280083183b22ca8c0b69131f3e5204ee4b 100644
--- a/src/common/helpers.py
+++ b/src/common/helpers.py
@@ -506,7 +506,11 @@ def get_file_path_from_dnd_dropped_uri(uri):
 	if path.startswith('file:\\\\\\'): # windows
 		path = path[8:] # 8 is len('file:///')
 	elif path.startswith('file://'): # nautilus, rox
-		path = path[7:] # 7 is len('file://')
+		if sys.platform == 'darwin':
+			# OS/X includes hostname in file:// URI
+			path = re.sub('file://[^/]*', '', path)
+		else:
+			path = path[7:] # 7 is len('file://')
 	elif path.startswith('file:'): # xffm
 		path = path[5:] # 5 is len('file:')
 	return path
diff --git a/src/roster_window.py b/src/roster_window.py
index 7a3458ddadaafd2b934bd64101a078f1fa9f024b..18ff203eefa013e14a4ed0959b60d10f5939f318 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -5018,6 +5018,15 @@ class RosterWindow:
 			uri = data.strip()
 			uri_splitted = uri.split() # we may have more than one file dropped
 			nb_uri = len(uri_splitted)
+			# Check the URIs
+			bad_uris = []
+			for a_uri in uri_splitted:
+				path = helpers.get_file_path_from_dnd_dropped_uri(a_uri)
+				if not os.path.isfile(path):
+					bad_uris.append(a_uri)
+			if len(bad_uris):
+				dialogs.ErrorDialog(_('Invalid file URI:'), '\n'.join(bad_uris))
+				return
 			def _on_send_files(account, jid, uris):
 				c = gajim.contacts.get_contact_with_highest_priority(account, jid)
 				for uri in uris:
@@ -5027,7 +5036,7 @@ class RosterWindow:
 							account, c, path)
 			# Popup dialog to confirm sending
 			prim_text = 'Send file?'
-			sec_text = i18n.ngettext('Do you want to send that file to %s:',
+			sec_text = i18n.ngettext('Do you want to send this file to %s:',
 				'Do you want to send those files to %s:', nb_uri) %\
 				c_dest.get_shown_name()
 			for uri in uri_splitted: